time

Django и WYSIWYG-редактор

django-wysiwyg.png Изначально пост планировался о наборе приложений без которых не обходится ни один мой проект на django, но потом я решил попробовать связку dajngo + wysiwyg-редактор с возможностью загрузки изображений. В итоге пост получился о том как построить простой сайт на flatpages с возможностью редактирования страниц и загрузки файлов.

Для начала нам понадобится:

  • подключить flatpages
  • установить django-annoying - удобный django-модуль, который содержит разные полезные дополнения. В частности декоратор render_to, функции get_object_or_None, get_config, StaticServer middleware и т.д. с полным списком можно ознакомится по выше приведенной ссылке.
  • django-tinymce, подключение описано тут

У меня получился такой settings.py и urls.py.

Теперь надо связать flatpages и только-что установленный django-tinymce, для этого в папке tinymce (я установил django-tinymce простым копированием нужных файлов в корень проекта) создаем admin.py. Все, теперь мы имеем работающую связку tinymce + flatpages, остается только настроить tinymce по вкусу.

Следующим этапом прикрутим загрузчик файлов. Для tinymce хватает разных загрузчиков - и платных и бесплатных, небольшой обзор есть тут. Но не у всех реализаций есть бекенд на python, точнее мне известен только для Image Manager, который рассматривается ниже.

Начнем с django-filebrowser, его требования:

Настройка django-filebrowser описана тут, а установка Grappelli описана тут. Grappelli меняет скин дефолтной админки django, скриншоты можно посмотреть тут. Django-filebrowser отказывается работать без Grappelli. Но после настройки этой связки все работает как положено: изображения и другие типы файлов грузятся без проблем, файлы можно сортировать по папкам, последние можно создавать/удалять.

Еще один вариант загрузчика изображений - Image Manager, демка. Сам загрузчик берем тут, коннектор для django тут. Автором коннектора является Андрея Гладилина, но у меня не заработал его коннектор, пришлось патчить:

  • подправил ссылки на python-коннектор,
  • пути для загрузки изображений,
  • функцию ShowDir()

Установка:

  1. Скаченный Image Manager распаковываем в папку PROJECT_PATH/static/js/tiny_mce/plugins
  2. Правим settings.py и urls.py, рабочие примеры с комментариями приведены выше.
  3. Архив python-images-patched.zip распаковываем в папку tinymce, в корне проекта. В settings.py правим IMAGE_MANAGER_DIR и указываем путь для аплоада картинок.

Еще WYSIWYG-редакторы, которые дружат с django:

Кстати, markItUp! + postmarkup = отличный BBCode редактор на python.

blog comments powered by Disqus