Я хотел бы знать лучший способ заменить стандартное поле textarea на богатый текстовый редактор в Django Admin?
Замените textarea на богатый текстовый редактор в Django Admin?
Ответ 1
Там надстройка приложения Django, чтобы обеспечить TinyMCE поддержка форм администратора Django без необходимости гадать с шаблонами администратора или внутренними элементами Django newform.
Ответ 2
Взгляните на этот snippet - основная идея состоит в том, чтобы включить пользовательские JS в определения администратора, которые заменят стандартные текстовые области богатыми -text.
Для jQuery/FCKEditor такой JS может выглядеть так:
$(document).ready(function() {
$("textarea").each(function(n, obj) {
fck = new FCKeditor(obj.id) ;
fck.BasePath = "/admin-media/fckeditor/" ;
fck.ReplaceTextarea() ;
});
});
Ответ 3
Я бы сказал: определите свой собственный класс ModelAdmin и перезапишите виджет, используемый для определенного поля, например:
class ArticleAdminModelForm(forms.ModelForm):
description = forms.CharField(widget=widgets.AdminWYMEditor)
class Meta:
model = models.Article
(AdminWYMEditor - это подкласс forms.Textarea
, который добавляет WYMEditor с конфигурацией, специфичной для приложения администратора Django).
Смотрите это сообщение в блоге Jannis Leidel, чтобы узнать, как этот виджет может быть реализован.
Ответ 4
В день публикации и ответов TinyMCE был довольно популярен (как это, вероятно, и сегодня). Но через некоторое время ckeditor появился, и многие считают, что лучшая альтернатива, включая многих пользователей SO:
Сравните TinyMCE и CKeditor для Wiki
http://www.turnkeylinux.org/blog/tinymce-vs-ckeditor
Существует также обзор редакторов WISIWYG в 2013 году с Django на русском языке:
Ответ 5
В настоящее время наиболее прямым способом использования tinymce в django admin является использование Grappelli.
http://code.google.com/p/django-grappelli/
Grappelli также является обязательным требованием django-filebrowser, поэтому, если вы хотите, чтобы весь shebang вам все равно понадобился.
Ответ 6
Хорошо, чтобы немного обновить этот пост, я бы сказал, что самый простой способ реализовать TinyMCE - использовать django-tinymce приложение, Вы также должны загрузить JS файлы с страницы TinyMCE. Я получил некоторые ошибки с инданализацией django, но загрузка пакетов laguage из TinyMCE должна быть достаточной.
Ответ 7
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)