





Существует дополнительное приложение Django для обеспечения поддержки TinyMCE для форм администратора Django без необходимости возиться с шаблонами администратора или внутренними компонентами Django newform.
Взгляните на этот фрагмент - основная идея состоит в том, чтобы включить пользовательский JS в определения вашего администратора, который заменит стандартные текстовые области редактором форматированного текста.
Для jQuery / FCKEditor такой JS мог бы выглядеть так:
$(document).ready(function() {
$("textarea").each(function(n, obj) {
fck = new FCKeditor(obj.id) ;
fck.BasePath = "/admin-media/fckeditor/" ;
fck.ReplaceTextarea() ;
});
});
Я бы сказал: определите свой собственный класс ModelAdmin и перезапишите виджет, используемый для определенного поля, например:
class ArticleAdminModelForm(forms.ModelForm):
description = forms.CharField(widget=widgets.AdminWYMEditor)
class Meta:
model = models.Article
(AdminWYMEditor - это подкласс forms.Textarea, который добавляет WYMEditor с конфигурацией, специфичной для приложения администратора Django).
См. это сообщение в блоге Янниса Лейдела, чтобы увидеть, как этот виджет может быть реализован.
В настоящее время самый простой способ использовать tinymce в админке django - это использовать Grappelli.
http://code.google.com/p/django-grappelli/
Grappelli также является требованием для django-filebrowser, поэтому, если вам нужен весь шебанг, он вам все равно понадобится.
Хорошо, чтобы немного обновить этот пост, я бы сказал, что самый простой способ реализовать TinyMCE - использовать приложение джанго-тинимце. Вы также должны загрузить файлы JS из Страница TinyMCE. У меня возникли ошибки с интернационализацией django, но загрузки пакетов laguage с TinyMCE должно быть достаточно.
class KindEditor(forms.Textarea):
class Media:
css = {
'all':(settings.STATIC_ROOT + 'editor/themes/default/default.css',)
}
js = (settings.STATIC_ROOT + 'editor/kindeditor-min.js',settings.STATIC_ROOT + 'editor/lang/zh_CN.js',)
def __init__(self):
attrs = {}
attrs['rel'] = 'kind'
super(KindEditor, self).__init__(attrs)
class NewsAdminForm(forms.ModelForm):
pass
class Meta:
model = News
widgets = {
'body':KindEditor()
}
class NewsAdmin(admin.ModelAdmin):
form = NewsAdminForm
admin.site.register(News, NewsAdmin)
На момент публикации и ответов TinyMCE был довольно популярен (как, вероятно, остается сегодня). Но через некоторое время появился ckeditor, и многие считают его лучшей альтернативой, включая многих пользователей SO:
Сравните TinyMCE и CKeditor для Wiki
http://www.turnkeylinux.org/blog/tinymce-vs-ckeditor
Также есть обзор редакторов WISIWYG с Django за 2013 год на русском языке:
давайте подождем v3 (возможно, отдельного от grappelli) ... тем временем я получил связку, работающую с code.google.com/p/django-filebrowser/source/browse/branches/… и django-tinymce-1.5.tar.gz (последняя версия на данный момент) с этим хаком code.google.com/p/django-tinymce/issues/detail?id=40 а.