Я видел статью по прикручиванию TinyMCE к Django, но мне кажется есть путь намного проще и правильние(субъективно).
Нам понадобится:
Подробности установки описывать не будем, перейдем сразу к нашей задаче.
Создадим чистый проект Django:
В директории wysiwyg выполним:
Этим самым мы установили менеджер файлов и библиотеку «рюшечек» для Django.
Grappelli использует собственные css, изображения и JavaScript (jQuery и TinyMCE). Поэтому нам необходимо вынести их в отдельный каталог, который не будет обрабатывать встроенный сервер Django(во время разработки, а в будующем Apache, Nginx и ...).
В директории wysiwyg создадим каталог media, в который скопируем(перенесем, сделаем симлинк) данные из grappelli/media. Также у менеджера файлов есть свои файлы которые мы скопируем из filebrowser/media/filebrowser в media/filebrowser. Создадим в media каталог data, в него мы будем заливать файлы через наш файловый менеджер.
Для доступа в админку нам нужно настроить подключение к одной из баз данных поддерживаемых Django(MySQL, PostgreSQL, Oracle, SQLite3) в settings.py, также неубходимо установить модули питона для работы с этими базами данных, лично я использую PostgreSQL и psycopg2. Должно получиться что-то в духе, если сервер базы данных стоит у вас на компьютере:
Дальше нам необходимо в том же settings.py в кортеже INSTALLED_APPS расскоментировать 'django.contrib.admin', — тем самым мы установили приложение админки Django. В urls.py расскоментировать from django.contrib import admin и admin.autodiscover() и (r'^admin/', include(admin.site.urls)), — этим мы связали приложение админки с «ссылкой, роутом»(кому как удобно) admin/. Теперь надо создать в базе данных таблици от нашей админки и нового «суперпользователя»:
Приступим к установке grappelli. В settings.py в кортеже INSTALLED_APPS перед 'django.contrib.admin', добавим 'grappelli', и создадим новый кортеж:
В urls.py где мы расскоментировали (r'^admin/', include(admin.site.urls)), добавим (r'^grappelli/', include('grappelli.urls')),
Самое время посмотреть как выглядит наша админка, кстати теперь запускать ее надо не как всегда:
Зайдем в нашем любимом браузере на http://localhost:8000/admin/ и полюбуемся новым видом нашей админки.
Приступим к установке filebrowser. Здесь все по аналогии с grappelli, urls.py добавим (r'^admin/filebrowser/', include('filebrowser.urls')), и в settings.py в INSTALLED_APPS добавим 'filebrowser',. Выставим следующие значение для MEDIA_URL и MEDIA_ROOT и добавим новый параметр FILEBROWSER_DIRECTORY:
В filebrowser/settings.py уберем исключение, которое используется если мы бы использовали django-tinymce и подправим DEFAULT_PATH_TINYMCE:
было
стало
Любуемся результатом http://localhost:8000/admin/filebrowser/browse/
Создадим новое приложение html
Отредактируем html/models.py, добавим в него
Создадим html/amin.py с следуюшим содержанием
Теперь осталось в settings.py в INSTALLED_APPS добавить 'html', и добавить новую талицу в нашу базу данных:
Cкажу сразу, по дефолту в TinyMCE выбран немецкий язык, исправить это можно в media/tinymce_setup/tinymce_setup.js:
исправив
на
Полюбуватся результатом можно на http://localhost:8000/admin/html/html/add/
Скрин:

Нам понадобится:
- Python массового перехода к 2.7 пока не замечено, так что будем использовать 2.6.х, а 3+ версию Django не поддерживает
- Django
- PIL библиотека питона для работы с графическими файлами
- Subversion (svn) для установки grappelli и filebrowser
Подробности установки описывать не будем, перейдем сразу к нашей задаче.
Создадим чистый проект Django:
django-admin.py startproject wysiwyg
В директории wysiwyg выполним:
svn checkout http://django-filebrowser.googlecode.com/svn/trunk/filebrowser/ filebrowser
svn checkout http://django-grappelli.googlecode.com/svn/trunk/grappelli/ grappelli
Этим самым мы установили менеджер файлов и библиотеку «рюшечек» для Django.
Grappelli использует собственные css, изображения и JavaScript (jQuery и TinyMCE). Поэтому нам необходимо вынести их в отдельный каталог, который не будет обрабатывать встроенный сервер Django(во время разработки, а в будующем Apache, Nginx и ...).
В директории wysiwyg создадим каталог media, в который скопируем(перенесем, сделаем симлинк) данные из grappelli/media. Также у менеджера файлов есть свои файлы которые мы скопируем из filebrowser/media/filebrowser в media/filebrowser. Создадим в media каталог data, в него мы будем заливать файлы через наш файловый менеджер.
Для доступа в админку нам нужно настроить подключение к одной из баз данных поддерживаемых Django(MySQL, PostgreSQL, Oracle, SQLite3) в settings.py, также неубходимо установить модули питона для работы с этими базами данных, лично я использую PostgreSQL и psycopg2. Должно получиться что-то в духе, если сервер базы данных стоит у вас на компьютере:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'wysiwyg',
'USER': 'user',
'PASSWORD': 'password',
'HOST': '',
'PORT': '',
}
}
Дальше нам необходимо в том же settings.py в кортеже INSTALLED_APPS расскоментировать 'django.contrib.admin', — тем самым мы установили приложение админки Django. В urls.py расскоментировать from django.contrib import admin и admin.autodiscover() и (r'^admin/', include(admin.site.urls)), — этим мы связали приложение админки с «ссылкой, роутом»(кому как удобно) admin/. Теперь надо создать в базе данных таблици от нашей админки и нового «суперпользователя»:
python manage.py syncdb
Приступим к установке grappelli. В settings.py в кортеже INSTALLED_APPS перед 'django.contrib.admin', добавим 'grappelli', и создадим новый кортеж:
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.request",
)
В urls.py где мы расскоментировали (r'^admin/', include(admin.site.urls)), добавим (r'^grappelli/', include('grappelli.urls')),
Самое время посмотреть как выглядит наша админка, кстати теперь запускать ее надо не как всегда:
python manage.py runserver --adminmedia=media
Зайдем в нашем любимом браузере на http://localhost:8000/admin/ и полюбуемся новым видом нашей админки.
Приступим к установке filebrowser. Здесь все по аналогии с grappelli, urls.py добавим (r'^admin/filebrowser/', include('filebrowser.urls')), и в settings.py в INSTALLED_APPS добавим 'filebrowser',. Выставим следующие значение для MEDIA_URL и MEDIA_ROOT и добавим новый параметр FILEBROWSER_DIRECTORY:
MEDIA_ROOT = '/путь/к/папке/на/диске/wysiwyg/media/'
MEDIA_URL = 'http://localhost:8000/media/'
FILEBROWSER_DIRECTORY = 'data/'
В filebrowser/settings.py уберем исключение, которое используется если мы бы использовали django-tinymce и подправим DEFAULT_PATH_TINYMCE:
было
# settings for django-tinymce
try:
import tinymce.settings
DEFAULT_URL_TINYMCE = tinymce.settings.JS_BASE_URL + '/'
DEFAULT_PATH_TINYMCE = tinymce.settings.JS_ROOT + '/'
except ImportError:
DEFAULT_URL_TINYMCE = settings.ADMIN_MEDIA_PREFIX + "tinymce/jscripts/tiny_mce/"
DEFAULT_PATH_TINYMCE = os.path.join(settings.MEDIA_ROOT, 'tinymce/jscripts/tiny_mce/')
стало
DEFAULT_URL_TINYMCE = settings.ADMIN_MEDIA_PREFIX + "tinymce/jscripts/tiny_mce/"
DEFAULT_PATH_TINYMCE = os.path.join(settings.MEDIA_ROOT, 'tinymce/jscripts/tiny_mce/')
Любуемся результатом http://localhost:8000/admin/filebrowser/browse/
Создадим новое приложение html
python manage.py startapp html
Отредактируем html/models.py, добавим в него
class html(models.Model):
html = models.TextField()
Создадим html/amin.py с следуюшим содержанием
from django.contrib import admin
from html.models import *
class htmlAdmin(admin.ModelAdmin):
class Media:
js = ['/media/tinymce/jscripts/tiny_mce/tiny_mce.js', '/media/tinymce_setup/tinymce_setup.js',]
admin.site.register(html, htmlAdmin)
Теперь осталось в settings.py в INSTALLED_APPS добавить 'html', и добавить новую талицу в нашу базу данных:
python manage.py syncdb
Cкажу сразу, по дефолту в TinyMCE выбран немецкий язык, исправить это можно в media/tinymce_setup/tinymce_setup.js:
исправив
language: "de",
на
language: "en",
Полюбуватся результатом можно на http://localhost:8000/admin/html/html/add/
Скрин:
