我在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标签的文章可见。那是为什么?
答案 0 :(得分:0)
widget
是表单字段的属性,而不是模型字段。您需要将该设置移至表单声明(或formfield_overrides
,如果您尝试在管理员中使用它。)
要显示已标记的内容而不在以后的视图中转义HTML标记,一种方法是使用|safe
内置过滤器。