【发布时间】:2011-05-20 11:52:45
【问题描述】:
如何在页面上仅显示粗体、斜体和所有其他非安全问题 HTML?
【问题讨论】:
标签: python html css django templates
如何在页面上仅显示粗体、斜体和所有其他非安全问题 HTML?
【问题讨论】:
标签: python html css django templates
要显示所有 HTML(无转义),您可以使用 safe 过滤器
{{ var|safe }}
在您的情况下,如果您想转义除某些标签之外的所有内容,您可以编写自己的过滤器来执行此操作:
{{ var|mysafe }}
在这里阅读:http://docs.djangoproject.com/en/dev/howto/custom-template-tags/
过滤器的算法可以是:
.replace 或
正则表达式)【讨论】:
清理 HTML 是一个很难解决的问题。垃圾邮件发送者和其他讨厌的人一直在想出新的方法来通过卫生设施走私 HTML。最安全的选择是定义无害标签的白名单,并使用真正的 HTML 解析器严格过滤掉所有其他标签(not 使用正则表达式)。
djangosn-ps.com 上有几个模板标签和过滤器,例如this 或 this one。选择过滤器时,请注意它使用白名单和 HTML 解析器,如 lxml.html(最好是 lxml.html.clean)或 BeautifulSoup。
【讨论】:
配置 TinyMCE 可能更有意义,因为用户只能输入您允许他的元素。 TinyMCE 为此提供了a powerful set of rules。如果您使用 django-tinymce,请参阅 this 以将 TINYMCE_DEFAULT_CONFIG 设置为您想要的选项。
【讨论】: