【发布时间】:2019-08-16 01:22:43
【问题描述】:
我在非 HTML 环境中使用 Django 模板,所以我自然想关闭 HTML 自动转义。
如何在全局级别将其关闭?
我知道在本地禁止自动转义的选项过多:
- django.utils.safestring.mark_safe
- safe filter
- autoescape tag
- autoescape constructor argument of Context
这些选项抑制全局启用的自动转义,在我的用例中,我希望相反。
根据docs,DjangoTemplates 后端应该有一个“自动转义”选项。
我什至找到了添加它的feature request 和commit。
但它似乎对我不起作用。
小例子:
from django.template import Context
from django.template import Template
import django
from django.conf import settings
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"OPTIONS":
{
"autoescape": False
}
}
]
settings.configure(TEMPLATES=TEMPLATES)
django.setup()
template = Template("My name is {{ my_name }}.")
context = Context({"my_name": "<FooBar>"})
print(template.render(context))
预期输出:My name is &lt;FooBar&gt;.
实际输出:My name is &lt;FooBar&gt;.
我可能错过了一些愚蠢的东西。 有人可以启发我吗?
我的虚拟环境:
python==3.6.5
Django==2.1.7
pip==9.0.3
pytz==2018.9
setuptools==39.0.1
【问题讨论】:
标签: python django python-3.x