Задать вопрос
@Pauchenkov
Начинающий программист Django

Какой wysiwyg редактор внедрить в Django 1.8?

Привет Всем! Прошу Вашей помощи. Я перечитал кучу манов по тому какой wysiwyg редактор внедрить в Django. Большинство из них на английском, который я вообще не понимаю( Но в этих мануалах (те что на русском) описываются то старые версии редакторов и фреймворка, а то и вообще не рабочие решения.
Какой wysiwyg с возможностью загрузки изображений и с очисткой форматирования копируемого текста поставить на сайт? Если Вам не тяжело - объясните как это сделать.
Заранее спасибо!
  • Вопрос задан
  • 1744 просмотра
Подписаться 7 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Pauchenkov Автор вопроса
Начинающий программист Django
Всем добрый вечер! Наконец-то удалось подключит wysiwyg редактор. Хочу поделиться на будущее с теми, кто еще этим не занимался :) Может кому и пригодится.
Значит подключил я ckeditor так:
1) Устанавливаем django-ckeditor этой командой: pip install django-ckeditor
2) Вносим ckeditor в список INSTALLED_APPS
INSTALLED_APPS = (
    ................. ,
    'ckeditor',
)

3) Настраиваем MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL, STATIC_DIRS, STATICFILES_FINDERS
после строчки import os, если вдруг у Вас не задано, пропишите путь базовой директории
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
, но если у Вас прописано значение по-другому - советую эту (существующую) строчку не трогать, а просто под ней добавить еще одну, назвав не BASE_DIR, а по-другому (например: _PATH).

Задаем MEDIA_ROOT и MEDIA_URL:
MEDIA_ROOT = os.path.join(BASE_DIR, 'static', 'media')
MEDIA_URL = '/media/'


Задаем STATIC_ROOT, STATIC_URL, STATICFILES_DIRS и STATICFILES_FINDERS:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/statics/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'statics'),
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)


4) Задаем пути и настройки CKEDITOR, а именно: CKEDITOR_UPLOAD_PATH, CKEDITOR_IMAGE_BACKEND, CKEDITOR_JQUERY_URL, CKEDITOR_CONFIGS

CKEDITOR_UPLOAD_PATH = "uploads/"
CKEDITOR_IMAGE_BACKEND = "pillow"
CKEDITOR_JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'

# CKEDITOR_CONFIGS по сути необязательны. Они влияют на тулбар редактора. Если выключите - будет очень мало инструментов для работы с текстом. После полной настройки - попробуйте с ними поиграться. Возможно найдете для себя какой-то более оптимальный вариант настроек!
CKEDITOR_CONFIGS = {
    "default": {
        "removePlugins": "stylesheetparser",
        'allowedContent': True,
        'toolbar_Full': [
        ['Styles', 'Format', 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat' ],
        ['Image', 'Flash', 'Table', 'HorizontalRule'],
        ['TextColor', 'BGColor'],
        ['Smiley','sourcearea', 'SpecialChar'],
        [ 'Link', 'Unlink', 'Anchor' ],
        [ 'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl', 'Language' ],
        [ 'Source', '-', 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates' ],
        [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ],
        [ 'Find', 'Replace', '-', 'SelectAll', '-', 'Scayt' ],
        [ 'Maximize', 'ShowBlocks' ]
    ],
    }
}


5) Настраиваем URL'ы
Сначала я объясняю, а в конце выложу ПОЛНЫЙ ВАРИАНТ, что бы все было наглядно видно!
В файле urls.py прописываем url ckeditor'a:
............. ,
url(r'^ckeditor/', include('ckeditor.urls')),

и добавляем после скобки, закрывающей urlpatterns вот это:
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


Вот ПОЛНЫЙ ВАРИАНТ:
urlpatterns = [
............... ,
url(r'^ckeditor/', include('ckeditor.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

6) ОБЯЗАТЕЛЬНО ВЫПОЛНЯЕМ collectstatic!!!

В терминале вводим: python manage.py collectstatic

После подтверждаем, введя yes!

7) В фале моделей (models.py) мы должны сначала совершить ипорт:
from ckeditor.fields import RichTextField

8) Осталось маленько. Теперь, что бы у Вас в админке у поля появился WYSIWYG-редактор нужно заместо models.CharField (TextField и других полей) вручную указать RichTextField.

Вот пример, как должно быть:
title_story = RichTextField(max_length=255, verbose_name="Название")
anons = RichTextField(max_length=1000, null=True, blank=True, verbose_name="Анонс")
story = RichTextField(verbose_name="Полная статья")
... ну и так далее ....
Ответ написан
Комментировать
sim3x
@sim3x
Учи английский иначе все задачи будем решать мы

django-summernote
Ответ написан
un1t
@un1t
Да хоть на китайском, какая разница, есть куча переводчиков.
Я использую ckeditor.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы