tornado 常见问题处理

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是默认自动开启转义的,大家可以根据需求来选是否转义,但是要知道转义的本意是来防止浏览器意外执行恶意代码的,所以去掉转义的时候需要谨慎选择。

 


 

转载于:https://www.cnblogs.com/Skyda/p/9737637.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值