我有一个基本模型,我添加了django-tinymce HTMLField用于富文本编辑。这在后端的管理表单中非常有效,所以我认为我已经正确设置了tinymce应用程序。
class BlogPost(models.Model):
blogtag = models.OneToOneField('PageInfo')
blogcontent = tinymce_models.HTMLField()
def __unicode__(self):
return self.blurbcontent
然后我在forms.py中有相同的模型形式:
class BlogForm(forms.ModelForm):
class Meta:
model = BlogPost
field = ['blogcontent']
exclude = ['blogtag']
但是当我在views.py中渲染表单并通过模板向用户显示时,无法加载tinymce编辑器,并且在我的模板中显示了一个普通的textarea表单字段。
if request.method == 'POST':
blogform = BlogForm(data=request.POST, instance=my_instance)
if blogform.is_valid():
blogform.save()
return HttpResponseRedirect('/' + url_param + '/')
else:
print blogform.errors
else:
blogform = BlogForm(instance=my_instance)
在我的模板中: <头> {{blogform.media}}< /头> {{blogform.blogcontent}}
如何在我的所有非后端非管理员表单需求中使用tinymce?在此先感谢您的帮助。
编辑: 这是我对tinymce的设置:
TINYMCE_DEFAULT_CONFIG = {
'plugins': "table,spellchecker,paste,searchreplace",
'theme': "advanced",
'cleanup_on_startup': True,
'custom_undo_redo_levels': 10,
}
TINYMCE_SPELLCHECKER = False
TINYMCE_COMPRESSOR = False
答案 0 :(得分:1)
所以我想出了如何使表单成为与tinymce应用程序本身支持的管理表单tinymce接口相同的tinymce形式。也许有更好的方法来做到这一点,但我发现如果你只是查看在表单字段中嵌入了tinymce的管理页面的源代码,你可以看到django的textarea小部件被tinymce应用程序覆盖HTML表单字段中的类属性。 所以不要在模板中使用这样的东西:
<head> {{blogform.media}} </head>
{{blogform.blogcontent}}
你可以将它包装在一个tinymce类标识符中,告诉使用header命令加载的tinymce javascript来包装带有tinymce的表单,如下所示:
<head> {{blogform.media}} </head>
<textarea class="tinymce"> {{blogform.blogcontent}} </textarea>
答案 1 :(得分:0)
我猜测你不能在模板的{{ form.media }}
中加入<head>
。
Django-Tinymce需要很少的开销才能开始工作,所以添加上面的内容它应该可以正常工作。
答案 2 :(得分:0)