Django:在管理界面中使用 TinyMCE 4
Django: Use TinyMCE 4 in admin interface
在尝试了各种方法让 TinyMCE 作为我在 Django 管理中的 HTML 内容的编辑器后,我终于可以使用本教程 - https://github.com/ITCase-django/django-tinymce-4.
但是使用这种方法我必须有 Django 1.9 和 "Grappelli" 管理员皮肤,我宁愿避免。我试图删除它,但它也删除了 TinyMCE。
我也尝试使用 django-tinymce
包中的 HTMLField()
,但这种方式得到的编辑器非常粗糙,只有少数选项(粗体、斜体、列表等等)。
是否有任何 "best-practice" 可以使用成熟的 TinyMCE 4 管理 Django(最新版本)?
编辑:在尝试了各种选项之后(比如使用 HTMLField() 的高级主题),我回到了我开始使用 Grappelli 主题的地方。我想我可以忍受这个主题一段时间。
我最近不得不更改管理页面中的一些内容,发现 that 很有用,也许您可以加载 TinyMCE 并使用它为您想要的表单初始化它。 (我会把它放在评论中,但我无法与我的代表评论)
如果您查看文档,您会发现有几种实现编辑器的方法: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",
}
这将打开更多按钮供您使用。
第三方库是快速解决方案,但如果您只需要 JS 解决方案并且不需要任何其他库 installed.You 可以在 django 管理中使用您的自定义 JS 文件来完成。
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>
在尝试了各种方法让 TinyMCE 作为我在 Django 管理中的 HTML 内容的编辑器后,我终于可以使用本教程 - https://github.com/ITCase-django/django-tinymce-4.
但是使用这种方法我必须有 Django 1.9 和 "Grappelli" 管理员皮肤,我宁愿避免。我试图删除它,但它也删除了 TinyMCE。
我也尝试使用 django-tinymce
包中的 HTMLField()
,但这种方式得到的编辑器非常粗糙,只有少数选项(粗体、斜体、列表等等)。
是否有任何 "best-practice" 可以使用成熟的 TinyMCE 4 管理 Django(最新版本)?
编辑:在尝试了各种选项之后(比如使用 HTMLField() 的高级主题),我回到了我开始使用 Grappelli 主题的地方。我想我可以忍受这个主题一段时间。
我最近不得不更改管理页面中的一些内容,发现 that 很有用,也许您可以加载 TinyMCE 并使用它为您想要的表单初始化它。 (我会把它放在评论中,但我无法与我的代表评论)
如果您查看文档,您会发现有几种实现编辑器的方法: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",
}
这将打开更多按钮供您使用。
第三方库是快速解决方案,但如果您只需要 JS 解决方案并且不需要任何其他库 installed.You 可以在 django 管理中使用您的自定义 JS 文件来完成。
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>