tornado模板的自动编码问题(autoescape )
2016-03-19 21:57
99 查看
tornado新版(具体版本未知)支持自动转义,比如{{ "<div>" }}不会输出html标签,而是进行转义。
{{ module.test(10) }} 也会进行转义。往往module的调用是输出html的,转义之后就没法使用了。
解决方法有2种:
1. 通过{% autoescape None %}关掉自动转义,但是此命令的作用于是整个文件,要么全自动转义,要么全都不转义
2. 使用{% module %}命令输出原始html.
``{% module *expr* %}``
使用场景:
如果一个文件中多数需要转义,则打开{% autoescape xhtml_escape %},遇到不需要转义的则通过{% module *expr* %}处理
如果一个文件多数不需要转义,则{% autoescape None %},遇到需要转义的使用{{ escape(xxx) }}处理
update:
{% module *expr* %} 这种方法可以直接调用module类,返回不会被转义。
如果直接输出html,可以使用raw的方式,比如 {% raw "<div>xxx</div>""" %},对<div>不会进行转义处理
{{ module.test(10) }} 也会进行转义。往往module的调用是输出html的,转义之后就没法使用了。
解决方法有2种:
1. 通过{% autoescape None %}关掉自动转义,但是此命令的作用于是整个文件,要么全自动转义,要么全都不转义
2. 使用{% module %}命令输出原始html.
``{% module *expr* %}``
Renders a `~tornado.web.UIModule`. The output of the ``UIModule`` isnot escaped::{% module Template("foo.html", arg=42) %}
使用场景:
如果一个文件中多数需要转义,则打开{% autoescape xhtml_escape %},遇到不需要转义的则通过{% module *expr* %}处理
如果一个文件多数不需要转义,则{% autoescape None %},遇到需要转义的使用{{ escape(xxx) }}处理
update:
{% module *expr* %} 这种方法可以直接调用module类,返回不会被转义。
如果直接输出html,可以使用raw的方式,比如 {% raw "<div>xxx</div>""" %},对<div>不会进行转义处理
相关文章推荐
- IE 、Firefox、Chrome 浏览器在 F12 控制台下切换至不同框架介绍
- 立方体环境贴图(Cube Mapping)之OpenGL原理
- 网页页面自动刷新的3中实现方式
- 猜数字
- hdu 4417(树状数组+离线算法)
- 多维数组
- 二维数组中的查找
- Could not reliably determine the server's fully qualified domain name
- Oracle ADF Development Essentials - Part 4
- 【WebService开发】其他调用webservice的方法
- Redis源码解析:11RDB持久化
- zjnu 1744 EKSPLOZIJA(模拟栈)
- mybatis主键返回
- Flexpaper播放swf的问题
- 并查集
- 机器学习:线性判别分析LDA
- IndentationError: unindent does not match any outer indentation level
- 你认为扁平化模式好还是树形结构好?
- 7-8-无向图的关节点-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- hdu1231 最大连续子序列--DP