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 }}