46

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

4

8 回答 8

28

有一个附加的 Django 应用程序可以为 Django 管理表单提供TinyMCE支持,而无需使用管理模板或 Django 新表单内部。

于 2008-12-01T05:12:28.520 回答
13

看看这个片段- 基本想法是在您的管理定义中包含自定义 JS,它将用富文本编辑器替换标准文本区域。

对于 jQuery/FCKEditor,这样的 JS 可能看起来像这样:

$(document).ready(function() {
    $("textarea").each(function(n, obj) {
        fck = new FCKeditor(obj.id) ;
            fck.BasePath = "/admin-media/fckeditor/" ;
            fck.ReplaceTextarea() ;
    });
});
于 2008-12-03T13:34:31.000 回答
12

我会说:定义您自己的 ModelAdmin 类并覆盖用于特定字段的小部件,例如:

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

    class Meta:
        model = models.Article

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

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

于 2008-12-06T13:14:21.647 回答
8

在发布日期和答案 TinyMCE 非常受欢迎(因为它可能今天仍然存在)。但一段时间后 ckeditor 出现了,许多人认为这是一个更好的选择,包括许多 SO 用户:

比较 TinyMCE 和 CKeditor 的 Wiki

http://www.turnkeylinux.org/blog/tinymce-vs-ckeditor

还有 2013 年对 WISIWYG 编辑器的 Django 俄语评论:

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

于 2015-03-16T13:09:13.003 回答
2

目前在 django admin 中使用 tinymce 最直接的方法是使用 Grappelli。

http://code.google.com/p/django-grappelli/

Grappelli 也是django-filebrowser的要求,所以如果你想要整个 shebang,无论如何你都需要它。

于 2010-03-09T20:31:53.080 回答
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)
于 2011-10-14T02:01:27.423 回答
2

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

于 2010-04-23T02:42:53.987 回答
0

安装这个包

pip install django-ckeditor

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

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

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

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

于 2022-02-19T17:37:00.050 回答