在 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({...})
但是,如果不在每个电子邮件模板(不是我项目中的每个模板!)中使用 {% autoescape %}
标签,我如何强制 render
函数关闭自动转义? ?
我想到了一个解决方案:遍历所有上下文(字典)项并标记它们为安全的 (mark_safe
),但它看起来并不优雅。
最佳答案
autoescape
选项已添加到 ticket 25469 中的 Django 模板后端。 .该更改将包含在即将发布的 Django 1.10 中。
请注意,您可能必须在 TEMPLATES
设置中启用 Django 模板后端的两个实例,一个启用自动转义,一个不启用(请参阅票证中的 this comment。您然后可以根据您是否希望启用自动转义来选择正确的模板后端。
在 Django 1.10 发布之前,请注意将 Context
传递给 render()
仅在 Django 1.8 中被弃用。它在 Django 1.8 和 1.9 中仍然有效。
关于python - 在 template.render 中关闭自动转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35319818/