具有上下文变量的特殊符号

时间:2018-10-10 12:42:43

标签: html django templates

在我的Django模板中,我有:

<strong>Copyright &copy; </strong> {{ copyright }}

位置:

copyright = "Company &copy; 2014-2018"

哪个显示:

Copyright © Company &copy; 2014-2018

为什么第一个符号可以,而第二个符号不能?

2 个答案:

答案 0 :(得分:3)

Django模板escapes variables,所以&copy;在呈现的模板中变成&amp;copy,在您的浏览器中显示为&copy;

您可以通过在视图中使用mark_safe来避免转义,

from django.utils.safestring import mark_safe
copyright = mark_safe("Company &copy; 2014-2018")

或使用模板中的safe过滤器。

{{ copyright|safe }}

请注意,只有安全地将此字符串标记为安全,因为您可以控制该值。您应该始终避开用户的输入,否则您将容易受到XSS攻击。

答案 1 :(得分:2)

Django默认情况下会自动在标记中转义html。如果要包含html,请使用

 {{copyright|safe}}