tornado 和 djanjo 转义处理对比

tornado

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

所有的模板输出都已经通过 tornado.escape.xhtml_escape 自动转义(escape)

在模板文件中加入 {% autoescape None %}、或者在简单表达语句 {{ … }} 写成 {% raw …%}

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()

1、利用raw

{% raw title %}

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

{% autoescape None %}
{{ title }}
{{ escape(title) }}

Django

1、使用mark_safe函数标记后,django将不再对该函数的内容进行转义

from django.utils.safestring import mark_safe 
ret = mark_safe(a)  

2、使用autoescape标签

{% autoescape off %}
    {{ a }}
{% endautoescape %}

3、管道符|safe

{{ a|safe }}
原文地址:https://www.cnblogs.com/luxiaojun/p/5833179.html