Django中TinyMCE的Widget错误

时间:2014-09-02 14:31:29

标签: python django python-2.7 tinymce

我在django中使用TinyMCE收到此错误:

TypeError: init ()得到了一个意外的关键字参数'widget'

我按照说明找到了它们,并且不知道为什么会出现错误。这是模型:

class Article(models.Model):
    """Represents a wiki article"""

    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=50, unique=True)
    text = models.TextField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))#      (help_text="Formatted using ReST")
    author = models.ForeignKey(User)
    is_published = models.BooleanField(default=False, verbose_name="Publish?")
    created_on = models.DateTimeField(auto_now_add=True)
    objects = models.Manager()
    published = PublishedArticlesManager()

注释“在ReST中#formatted”是因为原始TextField使用的是restructuredText。我实际上能够从CDN获得tinyMCE并在相应模板的头部放置一个非常简单的脚本。它加载了wysiwyg编辑器,但随后呈现了带有HTML标签的已保存页面。

所以我将形式声明添加为:

from django import forms

from models import Article, Edit, FileUploadHandler

from tinymce import models as tinymce_models

class ArticleForm(forms.ModelForm):
    class Meta:
        text = forms.Charfield(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))#(help_text="Formatted using ReST")
        model = Article
        exclude = ['author', 'slug']


class EditForm(forms.ModelForm):
    class Meta:
        model = Edit
        fields = ['summary']

class UploadImageForm(forms.ModelForm):
    class Meta:
        model = FileUploadHandler
        image = forms.ImageField()
        fields = ['title']

编辑器在那里,但在保存它的渲染时,带有html标签的文章可见。那是为什么?

1 个答案:

答案 0 :(得分:0)

widget是表单字段的属性,而不是模型字段。您需要将该设置移至表单声明(或formfield_overrides,如果您尝试在管理员中使用它。)

要显示已标记的内容而不在以后的视图中转义HTML标记,一种方法是使用|safe内置过滤器。