1

我正在使用django-post_office发送一封电子邮件,它使用 django 模板呈现主题行:

subject = engine.from_string(self.template.html_content).render(self.context)

Django 模板自动设置 autoescape=True以保证安全,这意味着如果你有一个 HTML 字符,例如Here's an email它会产生一个字符转义的字符串:Here's an email

如何在使用时禁用自动转义from_stringrender以这种方式正确显示电子邮件主题?

另一个例子:

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 &lt;FooBar&#x27;s&gt;.
4

1 回答 1

3

您可能只想使用正确的自动转义模板标签来转义字符串

{% autoescape off %}
{{ body }}
{% endautoescape %}

或将其标记为safe

"My name is {{ my_name|safe }}.

您也可以通过设置engine.autoescape为 False 来逃避

于 2020-11-28T17:08:06.220 回答