【问题标题】:Turn off autoescaping in template.render在 template.render 中关闭自动转义
【发布时间】:2016-05-21 01:51:20
【问题描述】:

在 Django

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

【问题讨论】:

    标签: python django django-1.10


    【解决方案1】:

    autoescape 选项已添加到 ticket 25469 中的 Django 模板后端。该更改将包含在即将发布的 Django 1.10 中。

    请注意,您可能必须在 TEMPLATES 设置中启用 Django 模板后端的两个实例,一个启用自动转义,一个不启用(请参阅票证中的 this comment。然后您可以选择正确的模板后端取决于您是否要启用自动转义。

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

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      相关资源
      最近更新 更多