在普通用户的管理表单之外使用Django Tinymce?

时间:2015-02-20 13:08:30

标签: javascript python django django-forms

我有一个基本模型,我添加了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

3 个答案:

答案 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)

确保将此添加到 HTML 页面的顶部:

<!DOCTYPE HTML>

Documentation

最好的问候

罗尔