在Django Admin中用富文本编辑器替换文本域?

48

我想知道在Django Admin中用哪种最佳方式将标准的textarea字段替换为富文本编辑器?

8个回答

31

14

请看这个代码片段-基本思路是在您的管理定义中包含自定义JS,用它来替换标准文本区域为富文本编辑器。

对于jQuery/FCKEditor,这样的JS可能是这样的:

$(document).ready(function() {
    $("textarea").each(function(n, obj) {
        fck = new FCKeditor(obj.id) ;
            fck.BasePath = "/admin-media/fckeditor/" ;
            fck.ReplaceTextarea() ;
    });
});

12

我建议:定义自己的ModelAdmin类并覆盖特定字段所使用的部件,例如:

class ArticleAdminModelForm(forms.ModelForm):
    description = forms.CharField(widget=widgets.AdminWYMEditor)

    class Meta:
        model = models.Article

AdminWYMEditor是一个forms.Textarea子类,它添加了特定于Django管理应用程序的WYMEditor配置。

请参阅Jannis Leidel的这篇博客文章,以了解如何实现此小部件。


8

2
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)

2

好的,更新一下这篇文章,我认为实现TinyMCE最简单的方法是使用django-tinymce应用程序。您还必须从TinyMCE页面下载JS文件。使用Django国际化时我遇到了一些错误,但是从TinyMCE下载语言包应该就足够了。


2

让我们等待v3的到来(也许是grappelli的独立版本)... 与此同时,我已经通过这个hack http://code.google.com/p/django-tinymce/issues/detail?id=40 成功使用了http://code.google.com/p/django-filebrowser/source/browse/branches/filebrowser3-no-grappelli/和django-tinymce-1.5.tar.gz(目前最新版本)。 嗯。 - user289974

2

安装该软件包

pip install django-ckeditor

然后运行这些命令进行迁移。

python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic

最后重新启动您的Django服务器。

完成上述步骤后,您可以在管理面板字段中看到富文本编辑器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接