当我使用TinyMCE编辑器时,Django如何处理转义?

时间:2010-12-05 10:51:01

标签: python html css django templates

如何在页面上仅显示粗体,斜体和所有其他非安全问题HTML?

3 个答案:

答案 0 :(得分:2)

清理HTML是一个非常难以解决的问题。垃圾邮件发送者和其他讨厌的人一直提出通过卫生设施走私HTML的新方法。最安全的选择是定义一个无害标签的白名单,并使用真正的HTML解析器严格过滤掉所有其他标签(使用正则表达式)。

djangosnippets.com上有几个模板标签和过滤器,例如: thisthis one。选择过滤器时,请注意它使用白名单和HTML解析器,例如lxml.html(最好是lxml.html.clean)或BeautifulSoup

答案 1 :(得分:2)

配置TinyMCE可能更有意义,用户只能输入你允许的元素。 TinyMCE有a powerful set of rules。如果您使用的是django-tinymce,请参阅this,将TINYMCE_DEFAULT_CONFIG设置为您想要的选项。

答案 2 :(得分:1)

要显示所有HTML(不转义),您可以使用safe过滤器

{{ var|safe }}

在您的情况下,如果您想要转义除某些标记之外的所有内容,您可以编写自己的过滤器来执行此操作:

{{ var|mysafe }}

在此处阅读:http://docs.djangoproject.com/en/dev/howto/custom-template-tags/

过滤器的算法可以是:

  1. 逃避一切
  2. 只展示那些标签 允许(使用.replace或 规则表达)