当前位置:  开发笔记 > 编程语言 > 正文

如何在django中使用Context时禁用HTML编码

如何解决《如何在django中使用Context时禁用HTML编码》经验,为你挑选了2个好方法。

在我的django应用程序中,我使用模板构建电子邮件正文,其中一个参数是url,注意在url中有两个由&符号分隔的参数.

t = loader.get_template("sometemplate")
c = Context({
   'foo': 'bar',
   'url': 'http://127.0.0.1/test?a=1&b=2',
})
print t.render(c)

渲染后产生: http://127.0.0.1/test?a=1&b=2

请注意,&符是HTML编码为"&".解决这个问题的一种方法是将每个参数分别传递给我的模板并在模板中构建url,但是我想避免这样做.

有没有办法禁用上下文参数的HTML编码或至少避免编码&符号?



1> Jonny Buchan..:

要为单个变量关闭它,请使用mark_safe:

from django.utils.safestring import mark_safe

t = loader.get_template("sometemplate")
c = Context({
   'foo': 'bar',
   'url': mark_safe('http://127.0.0.1/test?a=1&b=2'),
})
print t.render(c)

或者,要完全从Python代码中关闭autoescaping,请在初始化时使用autoescape参数Context:

c = Context({
   'foo': 'bar',
   'url': 'http://127.0.0.1/test?a=1&b=2',
}, autoescape=False)

如果你想在那里做一些in-template选项,如何关闭文档中的[自动HTML转义]部分.



2> James Bennet..:

或者只是在模板中使用"安全"过滤器.

另外,我不能强调熟悉Django文档的重要性; 像这样的许多常见问题有很容易找到的答案和解释(比如这个),阅读文档并了解一切如何运作将大大减少你需要花费的时间问"为什么这样做"并且增加你花在构建按照你想要的方式工作的时间上的时间.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有