Подтвердить что ты не робот

Замените textarea на богатый текстовый редактор в Django Admin?

Я хотел бы знать лучший способ заменить стандартное поле textarea на богатый текстовый редактор в Django Admin?

4b9b3361

Ответ 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 на русском языке:

http://habrahabr.ru/company/htdt/blog/202782/

Ответ 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)