• tornado--输入和输出


    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后,在代码有修改后保存后,服务器会自动重启(方便调试,不要在实际生产环境中运用!)
    •  1 from tornado import web
       2 from tornado import ioloop
       3 from tornado.httpserver import HTTPServer  # 非阻塞服务器
       4 from tornado.options import define, options
       5 
       6 define('port', 8080, help='run port', type=int)  # 自定义类型
       7 
       8 
       9 class Index(web.RequestHandler):
      10     def get(self):
      11         self.render('first.html')
      12 
      13 
      14 class TempHandle(web.RequestHandler):
      15     def get(self):
      16         self.redirect('https://www.baidu.com/')
      17 
      18 
      19 application = web.Application(
      20     handlers=[
      21         ('/', Index),
      22         ('/temp', TempHandle),
      23     ],
      24     debug=True,
      25     template_path='template',
      26 )
      27 
      28 
      29 def main():
      30     options.parse_command_line()  # 打印请求信息
      31     HttpServer = HTTPServer(application)  # 导入非阻塞服务器
      32     HttpServer.listen(options.port)  # 改用服务器进行监听
      33     ioloop.IOLoop.current().start()  # 循环监听
      34 
      35 
      36 if __name__ == '__main__':
      37     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传参数
      •  1 from tornado import web
         2 from tornado import ioloop
         3 from tornado.httpserver import HTTPServer  # 非阻塞服务器
         4 from tornado.options import define, options
         5 
         6 define('port', 8080, help='run port', type=int)  # 自定义类型
         7 
         8 
         9 class Index(web.RequestHandler):
        10     def get(self, name, age):
        11         self.write('{}{}'.format(name, age))
        12 
        13 
        14 application = web.Application(
        15     handlers=[
        16         ('/(?P<name>.+)/(?P<age>[0-9]+)', Index),
        17     ],
        18     debug=True,
        19     template_path='template',
        20 )
        21 
        22 
        23 def main():
        24     options.parse_command_line()  # 打印请求信息
        25     HttpServer = HTTPServer(application)  # 导入非阻塞服务器
        26     HttpServer.listen(options.port)  # 改用服务器进行监听
        27     ioloop.IOLoop.current().start()  # 循环监听
        28 
        29 
        30 if __name__ == '__main__':
        31     main()

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

  • 相关阅读:
    python35 1.守护进程 2.互斥锁3.IPC 4.生产者和消费者模型
    python34 多进程: 1.进程与程序的区别 2.阻塞 非阻塞 并行 并发(重点) 3.进程三种方式的切换 4.程序员永恒的话题 5.进程的创建以及销毁 6.进程的两种使用方式(重点) 7.join函数(重点) 8.process常用属性 9僵尸与孤儿进程(了解)
    Python33 1.UDP协议 2.与TCP区别 3.DNS服务器 4.进程----进入并发编程的学习 5.操作系统 6.多道技术
    Mybatis 属性配置
    SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession
    MyBatis 简单入门
    spring mvc 异步 DeferredResult
    Spring MVC 异步请求 Callable
    Servlet 异步处理
    @EnableWebMvc
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/10769050.html
Copyright © 2020-2023  润新知