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

Fil*_*lip 6 python django tinymce django-tinymce tinymce-4

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

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

我也尝试使用HTMLField()from django-tinymcepackage,但这种方式得到了非常粗糙的编辑器,只有少数选项(粗体、斜体、列表等等)。

是否有任何“最佳实践”让 Django(最新版本)管理具有成熟的 TinyMCE 4?

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

Ani*_*war 5

第三方库是快速解决方案,但如果您想要仅 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
Run Code Online (Sandbox Code Playgroud)

然后在你的 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)
Run Code Online (Sandbox Code Playgroud)

然后在myscript.js中初始化它

<script>

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