Django:在管理界面中使用TinyMCE 4

时间:2017-05-11 11:45:31

标签: python django tinymce tinymce-4 django-tinymce

在尝试了各种方法让TinyMCE成为我在Django管理中的HTML内容的编辑器后,我终于让它使用了本教程 - https://github.com/ITCase-django/django-tinymce-4

然而,使用这种方法我必须有Django 1.9和“Grappelli”管理皮肤,我宁愿避免。我试图删除它,但它也删除了TinyMCE。

我也尝试使用Bootstrap包中的React,但这种方式只有少数几个选项(粗体,斜体,列表等)。

有没有“最佳实践”让Django(最新版本)管理完全成熟的TinyMCE 4?

编辑:在尝试了各种选项(比如HTMLField()的高级主题之后)我回到了Grappelli主题的开始。我想我可以忍受这个主题一段时间。

3 个答案:

答案 0 :(得分:2)

第三方库是快速解决方案,但如果您只需要JS解决方案而且不需要安装任何其他库。您可以使用自定义JS文件在django admin中执行此操作。

class FooForm(forms.ModelForm):

   def __init__(self,*args,**kwargs):
      super(FooForm, self).__init__(*args, **kwargs)
      self.fields['yourtinymcefield'].widget.attrs['class'] = 'tiny-class'
   class Meta:
      model = FooModel
      fields = ('fields') # your fields here

然后在你的admin.py

class FooAdmin(admin.ModelAdmin):
    form = FooForm
    # regular stuff
    class Media:
        js = (
            'https://cloud.tinymce.com/stable/tinymce.min.js' # tinymce js file
            'js/myscript.js',       # project static folder
        )

admin.site.register(Foo, FooAdmin)

然后在myscript.js中初始化它

<script>

tinyMCE.init({
        //mode : "textareas",
        mode : "specific_textareas",
        editor_selector : "tiny-class",
        theme : "simple"
    });
</script>

答案 1 :(得分:1)

我最近不得不在管理页面中更改一些内容,并发现that有用,也许您可​​以加载TinyMCE并使用此方法为您想要的表单启动它。 (我将其放在评论中,但我无法对我的代表发表评论)

答案 2 :(得分:1)

如果您查看文档,可以看到有几种方法可以实现编辑器:http://django-tinymce.readthedocs.io/en/latest/usage.html#using-the-widget

由于您要使用模型字段类型,因此您需要查看设置以扩展编辑器上可用的选项。

编辑器的默认设置为“简单”。根据你关于那个相当粗糙的陈述,我会转到功能齐全的编辑。

为此,您将更改项目settings.py中的配置:http://django-tinymce.readthedocs.io/en/latest/installation.html#configuration

如果不加测试,请添加:

TINYMCE_DEFAULT_CONFIG = {
'theme': "advanced",
}

这将打开更多按钮供您使用。