专栏目录请点击
转义
我们写上如下代码
handler
class MainHandler(tornado.web.RequestHandler):
def get(self):
a_tag = "<a herf='www.baidu.com'>百度一下</a>"
self.render("index.html",a_tag=a_tag)
index.html
<body>
<h2>Hello World</h2>
<div>
{{a_tag}}
</div>
</body>
结果
这里我们会发现,按标签按照字符串直接展现了出来,但是,如果我们想要让他展示出来,怎么办呢
第一种方法
- 这时因为
tornado
会进行自动转义,也是出于安全考虑的一种做法 - 如果想要去除这种转义,我们可以添加配置项
autoescape=None,
def make_app():
return tornado.web.Application(
...
autoescape=None
)
- 但是这种是全局实现了不转义,如果只是页面实现不转义呢
第二种方法
- 我们可以在不需要转义的html文档上面,写上
{% autoescape None %}
同样,我们也可以实现相同的效果
转义
我们开启了转义的配置,但是又想让某个变量进行转义
- 这个时候我们可以用一个函数来进行转义
<body>
<h2>Hello World</h2>
<div>
{{a_tag}}
</div>
<div>
{{escape(a_tag)}}
</div>
</body>
效果
第三种方法
除此之外,如果我们只是让某个变量不转义,那么可以写上如下的写法,这样就不要开启配置了
<body>
<h2>Hello World</h2>
<div>{% raw a_tag %}</div>
</body>
这样我们也可以实现相应的效果