3

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

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

知道为什么会这样吗?我已经尝试过 wymeditor 和 fckeditor 并且两者都发生了。

4

2 回答 2

3

我相信在 Django CMS 中,HTML 清理发生在 Django 模板层之前。我查看了我的数据库,发现我的 HTML 中的“”标签正在被清理。

我认为这发生在插件(Django CMS 用于其内容的短语)层。我假设要添加 HTML,您使用的是Text plugin。查看Text 插件模型的方法的来源clean

def clean(self):
    self.body = clean_html(self.body, full=False)

它调用cms.utils.clean_html,而后者又用于html5lib清理 HTML。

解决此问题的一种方法是创建一个自定义插件,该插件继承自Text插件并重新实现clean不进行此清理的方法。

于 2013-02-06T15:31:47.023 回答
0

在 Django 中,默认情况下,字符串在输出到网页之前会进行清理。我怀疑 Django-CMS 将插件视为未经处理的用户数据,因此 Django 模板系统从插件中删除了 HTML 字符。

Django 模板文档:http ://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs

请注意第一项,自动转义。我怀疑插件正在通过该过滤器运行。

抱歉,我没有更多细节。我不是 Django-CMS 的人。

于 2011-02-08T12:45:38.237 回答