python - 在 template.render 中关闭自动转义

标签 python django django-1.10

在 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/

相关文章:

python - 如何将参数传递给python中正在运行的线程

django - Django-在模板中打印字典

django - 更新 django 模型对象的单个字段的简洁方法

python - 从我的 Django 应用程序拒绝连接到 Minio Docker 实例

python - Django 1.10 : base_site. html 覆盖不起作用

python - 在不使用 Django 本身的情况下测试自定义 Django 中间件

javascript - 将实数拆分为 2 个加数

python - 使用 Anaconda 安装 MySQLdb

python - 使用诱变剂为 MP4 文件设置自定义标签时出现问题

python - 带有 redirect_uri 的 social-auth-app-django facebook 后端状态