3

在 Django < 1.8 中,可以在不自动转义的情况下呈现模板:

context = Context({...}, autoescape=False)
result = template.render(context)

在 Django 1.8/1.9 中,我得到以下弃用警告:

RemovedInDjango110Warning: render() must be called with a dict, not a Context.

当然,我可以将Context实例更改为 dict:

result = template.render({...})

但是如何强制该render功能关闭自动转义而不{% autoescape %}在每个电子邮件模板中使用标签(不是我项目中的每个模板!)?

我想到的只有一个解决方案:遍历所有上下文(字典)项并将它们标记为安全(mark_safe),但这似乎并不优雅。

4

1 回答 1

3

票 25469autoescape中的 Django 模板后端添加了一个选项。该更改将包含在即将发布的 Django 1.10 中。

请注意,您可能必须在TEMPLATES设置中启用 Django 模板后端的两个实例,一个启用自动转义,一个不启用(请参阅票证中的此评论。然后您可以根据是否选择正确的模板后端您希望启用自动转义。

在 Django 1.10 发布之前,请注意仅在 Django 1.8 中不推荐将 a 传递Context给。render()它仍然适用于 Django 1.8 和 1.9。

于 2016-02-10T16:19:06.533 回答