关闭模板渲染中的自动转义



在 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),但它似乎并不优雅。

工单 25469 的 Django 模板后端中添加了一个autoescape选项。这一变化将包含在即将发布的Django 1.10中。

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

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

相关内容

  • 没有找到相关文章

最新更新