我正在使用django-cms,我在页面中添加了一段文本内容(使用标准文本插件)。然后在那段文字上,我进入html模式并添加<img src="/foo/bar.png" />
并保存插件并保存页面。
在网站上,现在,我看到我所做的页面更改,但img标记已被删除。
知道为什么会这样吗?我试过wymeditor和fckeditor,它发生在两者之下。
答案 0 :(得分:3)
我相信在Django CMS中,HTML清理发生在Django Template层之前。我查看了我的数据库,发现我的HTML中的“”标签正在被清理。
我认为这发生在Plugin(Django CMS用于其内容的位置)层。我假设要添加HTML,您使用的是Text plugin。查看source for the clean
method of the Text plugin model:
def clean(self):
self.body = clean_html(self.body, full=False)
它会调用cms.utils.clean_html
,然后使用html5lib
来清理HTML。
解决此问题的一种方法是创建一个继承自Text
插件的custom plugin,并重新实现不执行此清理的clean
方法。
答案 1 :(得分:0)
在Django中,默认情况下,在输出到网页之前对字符串进行清理。我怀疑Django-CMS将插件视为未经过处理的用户数据,因此Django Template系统会从插件中删除HTML字符。
Django模板文档:http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs
注意第一项,autoescape。我怀疑插件正在通过该过滤器运行。
抱歉,我没有更多细节。我不是Django-CMS的人。