1 怎么获取从页面中的传值
使用 self.get_body_argument
tornado的参数存储在self.request.body内,通过json以后就可以直接取值,当初我在前端使用angular时tornado就不能通过self.get_argument()获取到只能用这种办法获得angular post过来的数据。
2 怎么获取从url传过来的值
使用self.get_argument
参考 :https://www.cnblogs.com/x54256/p/8195576.html
tornado的get和post提交的参数都可以通过self.get_argument()获得。只需要在第一个参数中填写key值就可以获取,第二个参数为默认值
3 设置cooke过期时间
self.set_secure_cookie('user_id', '1', expires_days=None, expires=time.time()+900)
4 write()
write 可以在同一个处理方法中多次使用write方法
write方法是写到缓冲区的,我们可以像写文件一样多次使用write方法不断追加响应内容,
最终所有写到缓冲区的内容一起作为本次请求的响应输出。
在write函数内部有一句
if isinstance(chunk, dict):
chunk = escape.json_encode(chunk)
如果存在,将会以json的格式去改变协议头,然后json数据
实际上,我们可以不用自己手动去做json序列化,当write方法检测到我们传入的chunk参数是字典类型后,会自动帮我们转换为json字符串。
5 如何重写tornado.web.RequestHandler方法
此方法下有一函数,initialize()
使用initialize()进行重写
6 传值html标签转义
tornado会自动的转义,把所有的输出都作为字符串,这样做的就能防止一些恶意代码在输出到前端时被执行,从而造成数据泄露。
在django下进行转义 示例 {{ a_tag|safe }}
1 全局转义,在application中添加配置项
autoescape= None
2 在html文档开始添加 {% autoescape None %} #实现整个文档转义
#在开启全局和文档不转义的情况下,可以使用 escape() 来开启变量的转义
{{ a_tag }} {{ escape(a_tag) }}
3 也可以使用{% raw a_tag%}来输出不转义内容
tornado是默认自动开启转义的,大家可以根据需求来选是否转义,但是要知道转义的本意是来防止浏览器意外执行恶意代码的,所以去掉转义的时候需要谨慎选择。