tornado--输入和输出


  • tornado的self.write只接受byte,Unicode,dict三种格式的对象。
  • self.write会存在一个缓冲区,当不强制断开缓冲的时候,它会把当前函数的所有write全部读取,在一次性的返回到html页面
  • self.flush方法会提前结束self.write的缓冲,将之前读取的write内容返回到html页面
  • 当write内容里存在字典时,它会把前面的内容全部按照json格式解析(html标签会失效),若想各自按照特定的格式解析,需要中间用flush隔开。
  • self.finish方法会面不能接self.write,但是可以处理别的代码。
  • 在Application里面增加一个参数debug=True后,在代码有修改后保存后,服务器会自动重启(方便调试,不要在实际生产环境中运用!)
  •  from tornado import web
    from tornado import ioloop
    from tornado.httpserver import HTTPServer # 非阻塞服务器
    from tornado.options import define, options define('port', 8080, help='run port', type=int) # 自定义类型 class Index(web.RequestHandler):
    def get(self):
    self.render('first.html') class TempHandle(web.RequestHandler):
    def get(self):
    self.redirect('https://www.baidu.com/') application = web.Application(
    handlers=[
    ('/', Index),
    ('/temp', TempHandle),
    ],
    debug=True,
    template_path='template',
    ) def main():
    options.parse_command_line() # 打印请求信息
    HttpServer = HTTPServer(application) # 导入非阻塞服务器
    HttpServer.listen(options.port) # 改用服务器进行监听
    ioloop.IOLoop.current().start() # 循环监听 if __name__ == '__main__':
    main()

    tornado渲染模板:在app下定义模板路径

    •  在Appalication里面添加一个参数:template_path='模板文件路径的字符串'
    • 在视图函数中使用self.render方法渲染模板。render接受一个template_path的html文件的相对路径的字符串
  • 页面重定向,self.redirect,redirect里面接收一个需要跳转的url

  获取请求信息:

    • self.request

      • HTTPServerRequest(protocol='http', host='127.0.0.1:8080', method='GET', uri='/', version='HTTP/1.1', remote_ip='127.0.0.1')  //请求头信息
    • self.request + 属性名  (self.request.host,即可拿到host地址)
    • 常用的请求信息:
      • method
      • remote_ip
      • full_url() // 重新构建此请求的完整url
      • requetst_time()  // 请求此请求执行所花费的时间
      • uri  请求的完整uri
      • path  路径的部分uro
      • query  查询部分的uri
      • vsersion   请求中的指定的http版本,例如‘http/1.1’
  • 输入:
    • self.get_argument:获取get请求的对应的key值的value,若无该value,则需指定默认值:   value = self.get_argument(key,default_value),当一个key对应多个value时,该方法只会获取最后一个value
    • self.get_arguments:获取该key对应的所有value,以列表的形式返回。如无value返回,则默认返回空列表
    • 这两个方法适用于get和post
    • get_query_argument(s):只获取get请求的url参数
    • get_body_argument(s):获取post请求的参数
  • url传参:
    • restful风格的URL传参数
    •  from tornado import web
      from tornado import ioloop
      from tornado.httpserver import HTTPServer # 非阻塞服务器
      from tornado.options import define, options define('port', 8080, help='run port', type=int) # 自定义类型 class Index(web.RequestHandler):
      def get(self, name, age):
      self.write('{}{}'.format(name, age)) application = web.Application(
      handlers=[
      ('/(?P<name>.+)/(?P<age>[0-9]+)', Index),
      ],
      debug=True,
      template_path='template',
      ) def main():
      options.parse_command_line() # 打印请求信息
      HttpServer = HTTPServer(application) # 导入非阻塞服务器
      HttpServer.listen(options.port) # 改用服务器进行监听
      ioloop.IOLoop.current().start() # 循环监听 if __name__ == '__main__':
      main()

      在路径里面利用正则表达式对url分组匹配进行命名?P<name>,再在视图函数里将组名传入视图函数的参数,就可以拿到restful风格的url参数了。

最新文章

  1. ApexSQLLog总结
  2. 运行setup.js文件
  3. [反汇编练习] 160个CrackMe之010
  4. js如何判断一个数组中是否有重复的值
  5. poj 3984 迷宫问题 bfs
  6. Mysql group_concat函数被截断的问题
  7. 四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现
  8. JavaEE Tutorials (8) - Java持久化API介绍
  9. Rewrite JSON project with Fetch
  10. python爬虫之天气预报网站--查看最近(15天)的天气信息(正则表达式)
  11. python_day1_变量
  12. 潭州课堂25班:Ph201805201 爬虫基础 第五课 (案例) 豆瓣分析 (课堂笔记)
  13. pitch, yaw, roll
  14. Delphi TStringHelper用法详解
  15. nginx 常见错误释义
  16. Hibernate缓存应用的积累与总结
  17. 第十九章,指针小练习(C++)
  18. SpringMVC由浅入深day02_1课程安排_2包装类型pojo参数绑定_3集合类型绑定
  19. NOIP2017 考前汇总
  20. 项目压力测试软件 -- LoadRunner 11.0 的安装、汉化和破解

热门文章

  1. element-ui 修改源码实践 --tranfer
  2. ios调用Google地图
  3. select、poll、epoll的区别
  4. win10 如何关掉自带的杀毒软件 window defender
  5. python-之-深浅拷贝一
  6. 简单的ALV示例
  7. jQuery 入口函数主要有4种写法
  8. Python实现,从txt取出号码,在数据库里查询此号码是否存在
  9. PTA-栈
  10. php优秀框架codeigniter学习系列——CI_Loader类分析