如何在页面上仅显示粗体,斜体和所有其他非安全问题HTML?
答案 0 :(得分:2)
清理HTML是一个非常难以解决的问题。垃圾邮件发送者和其他讨厌的人一直提出通过卫生设施走私HTML的新方法。最安全的选择是定义一个无害标签的白名单,并使用真正的HTML解析器严格过滤掉所有其他标签(不使用正则表达式)。
djangosnippets.com上有几个模板标签和过滤器,例如: this或this 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/
过滤器的算法可以是:
.replace
或
规则表达)