django-cms从文本内容中删除<img/>标记

时间:2011-02-08 07:16:13

标签: html django django-cms

我正在使用django-cms,我在页面中添加了一段文本内容(使用标准文本插件)。然后在那段文字上,我进入html模式并添加<img src="/foo/bar.png" />并保存插件并保存页面。

在网站上,现在,我看到我所做的页面更改,但img标记已被删除。

知道为什么会这样吗?我试过wymeditor和fckeditor,它发生在两者之下。

2 个答案:

答案 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的人。