在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
),但它看起来并不优雅。
答案 0 :(得分:3)
ticket 25469中的Django模板后端添加了autoescape
选项。这一变化将包含在即将推出的Django 1.10中。
请注意,您可能必须在TEMPLATES
设置中启用Django模板后端的两个实例,一个启用自动转义,另一个不启用(请参阅故障单中的this comment。您可以然后根据您是否要启用自动视图来选择正确的模板后端。
在Django 1.10发布之前,请注意,仅在Django 1.8中不推荐将Context
传递给render()
。它仍然适用于Django 1.8和1.9。