使用 django 模板 from_string() 和 render() 时如何禁用自动转义?
How to disable autoescape when using django template from_string() and render()?
我正在使用 django-post_office 发送电子邮件,它使用 Django 模板呈现主题行:
subject = engine.from_string(self.template.html_content).render(self.context)
Django 模板自动 sets autoescape=True 以确保安全,这意味着如果您有一个 HTML 字符,例如 Here's an email
,它将生成一个字符转义的字符串:Here's an email
.
如何在以这种方式使用 from_string
和 render
时禁用自动转义以正确显示电子邮件主题?
另一个例子:
from django.template import engines
template = engines['django'].from_string("My name is {{ my_name }}.")
context = {"my_name": "<FooBar's>"}
print(template.render(context))
结果:
My name is <FooBar's>.
您可能只想使用适当的 autoescape 模板标签转义您的字符串
{% autoescape off %}
{{ body }}
{% endautoescape %}
或者直接标记为safe
"My name is {{ my_name|safe }}.
您也可以通过将 engine.autoescape
设置为 False
来转义
我正在使用 django-post_office 发送电子邮件,它使用 Django 模板呈现主题行:
subject = engine.from_string(self.template.html_content).render(self.context)
Django 模板自动 sets autoescape=True 以确保安全,这意味着如果您有一个 HTML 字符,例如 Here's an email
,它将生成一个字符转义的字符串:Here's an email
.
如何在以这种方式使用 from_string
和 render
时禁用自动转义以正确显示电子邮件主题?
另一个例子:
from django.template import engines
template = engines['django'].from_string("My name is {{ my_name }}.")
context = {"my_name": "<FooBar's>"}
print(template.render(context))
结果:
My name is <FooBar's>.
您可能只想使用适当的 autoescape 模板标签转义您的字符串
{% autoescape off %}
{{ body }}
{% endautoescape %}
或者直接标记为safe
"My name is {{ my_name|safe }}.
您也可以通过将 engine.autoescape
设置为 False