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

Using Django Tinymce outside of admin forms for normal users?

我有一个基本模型,我添加了 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 编辑器没有加载,并且我的模板中出现了一个纯文本区域表单字段。

    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

我敢猜测您没有在模板的 <head> 中包含 {{ form.media }}

Django-Tinymce 需要很少的开销就可以工作,所以添加上面的内容应该可以正常工作。

所以我想出了如何使表单成为与 tinymce 应用程序本机支持的管理表单 tinymce 界面相同的 tinymce 表单。也许有更好的方法,但我发现如果你只是查看在表单字段中嵌入了 tinymce 的管理页面的源代码,你可以看到 django 的 textarea 小部件被 tinymce 应用程序覆盖HTML 表单字段中的 class 属性。 所以不要在你的模板中有这样的东西:

  <head> {{blogform.media}} </head> 
  {{blogform.blogcontent}}

你可以将它包装在一个 tinymce class 标识符中,以告诉使用 header 命令加载的 tinymce javascript 像这样用 tinymce 包装表单:

   <head> {{blogform.media}} </head> 
   <textarea class="tinymce"> {{blogform.blogcontent}} </textarea>

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

<!DOCTYPE HTML>

Documentation

此致

罗尔