Tornado模板转义处理

转自:http://www.qttc.net/201305320.html

tornado默认是转义所有字符,比较安全,但有时候我们的确需要把字符当做html来解析处理,因此我们需要做些处理。

示例:

main.py 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import tornado.ioloop
import tornado.web
 
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('main.html',title = '<h1>Title</h1>')
 
application = tornado.web.Application([
    (r"/", MainHandler),
])
 
if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

main.html 代码:

1
{{ title }}

执行结果:

默认把h1标签给转义,我们可以这么干使它不要转义

main.html 代码:

1
2
{% raw title %}
{{ title }}

raw 是不要转义

执行:

或者在头部这么定义

main.html

1
2
3
{% autoescape None %}
{{ title }}
{{ escape(title) }}

{% autoescape None %} 是整个文件都生效,但可以使用escape转义某一处

执行:

原文地址:https://www.cnblogs.com/ymy124/p/4873367.html