使用 Django,用户是否可以在表单字段中提交 HTML,保存,然后在模板中呈现 HTML?
一个示例是用户在文本字段中添加一个链接,然后该链接应呈现为文本其余部分中的标签。
用户会输入如下内容:
this is a site called <a href="http://stackoverflow.com">SO</a>.
SO 链接将是一个链接,而不是将其呈现为文本。
使用 Django,用户是否可以在表单字段中提交 HTML,保存,然后在模板中呈现 HTML?
一个示例是用户在文本字段中添加一个链接,然后该链接应呈现为文本其余部分中的标签。
用户会输入如下内容:
this is a site called <a href="http://stackoverflow.com">SO</a>.
SO 链接将是一个链接,而不是将其呈现为文本。
Django 默认转义。您可以将字符串标记为safe
通过过滤器或标签来防止自动转义行为。
{{ my_text_with_html|safe }}
{% autoescape off %}
{{ my_test_with_html }}
{% endautoescape %}
如果您接受用户输入的 html,则需要对其进行清理,以便他们无法编写脚本等。为此,只需搜索 python html 清理并在将数据发送到模板之前应用它。
您可以通过使用适当的过滤器标记 HTML 来告诉 Django HTML 是安全的:
{{ variable|safe }}
您还可以使用autoescape 标签来禁用自动转义:
{% autoescape off %}
{{ variable }}
{% endautoescape %}
但是,如果您为其他(未知)用户启用此功能,我强烈建议您使用其他东西,因为从 Javascript 或其他您不想要的 HTML 内容(例如,on* -参数等)。Django 实际上附带了对您可以提供给用户的一些标记语言的基本支持。我猜降价是最受欢迎的。