美文网首页
tornado_输入输出

tornado_输入输出

作者: 三月向阳的风 | 来源:发表于2019-01-19 15:09 被阅读0次

    输出

    在tornado里面如果要在浏览器输出内容,那么我们就需要用到write方法。
    它可接收的类型有三种:unicode字符串,dict字典与bytes字节
    除此之外我们还可以直接把json字符串写到浏览器当中

    self.write()
    把传入的参数写入到浏览器

    self.flush()
    执行flush时会把已经write的内容先刷新到浏览器

    self.finish()
    结束操作,后面的内容会被执行但是不会被显示

    self.render()
    传入一个页面,会返回页面内容

    self.redirect()
    传入一个路由,实现路由的跳转

    import json
    
    class MainHandler(tornado.web.RequestHandler):
        def  get(self):
            self.write('hello')  # 字符串
            self.write(<br />)
            self.write(b'hello')  # bytes
    
    # 当write传输字典的时候,整个字符串都按照json字符串处理,有些格式并不会被浏览器解析(例如<br />)
    # 此时应该先调用flush方法,之后再把字典写入
            self.flush()
            di = {
                'name': 'xiaoming'
            }
            self.write(di)  
    
            li = ['a', 'b']
            self.write(json.dumps(li))  # json字符串
    
            # flush
            self.flush()  # 刷新
            self.finish()  # 结束
            self.render('in_out.html')  # 可以返回一个HTML页面
            self.redirect('/')  # 路由跳转
    

    获取请求信息

    当我们开启tornado服务时,如果想知道是谁在访问我们,可以调用self.request来查看请求信息

    method HTTP请求方法,例如 GET 或 POST
    remote_ip 客户端的IP地址,返回值类型为字符串
    full_url() 重新构建此请求的完整UR
    request_time() 返回此请求执行所花费的时间
    uri 请求的完整uri
    path 路径部分的uri
    query 查询部分的uri
    version 请求中指定的HTTP版本,例如"HTTP /1.1"
    self.request  # 获取一个请求对象
    self.request.remote_ip  # 获取这个对象里面的ip属性
    

    输入

    self.get_argument('name', '')
    获取请求参数数据,第一个参数为参数名,第二个参数指定默认值。相同参数名只能获取最后一个参数

    self.get_arguments('name')
    获取请求参数数据,以列表的形式存储。可获取多个相同参数名的值

    self.get_query_argument()
    self.get_query_arguments()
    获取get请求里面url传参的数据

    self.get_body_argument()
    self.get_body_arguments()
    获取post请求里面body的数据

    class MainHandler(tornado.web.RequestHandler):
        def get(self):  # 获取URL数据
            name = self.get_argument('name', 'no')
            self.write(name)
            self.write('<br />')
            name = self.get_arguments('name')
            self.write('<br />'.join(name))
    
        def post(self):  # 获取body数据
            name = self.get_argument('name', 'no')
            password = self.get_argument('password', 'none')
            self.write('user: %s <br /> password: %s' % (name, password))
    
    class IndexHandler(tornado.web.RequestHandler):
        def get(self):  # 获取URL数据
            name = self.get_query_argument('name', '')
            self.write(name)
            self.write('<br />')
            name = self.get_query_arguments('name')
            self.write('<br />'.join(name))
    
        def post(self):  # 获取body数据
            name = self.get_body_argument('name', '')
            password = self.get_body_argument('password', '')
            self.write('user: %s <br /> password: %s' % (name, password))
    
    

    URL传参


    查询字符串风格

    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            name = self.get_argument('name', '')
    
    • 路由
    Application([
        (r'/', MainHandler),
    ])
    
    • URL

    http://127.0.0.1:8000/?name=xiaoming


    REST风格

    class MainHandler(tornado.web.RequestHandler):
        def get(self, name, age):
            self.write('name: %s <br /> age: %s' % (name, age))
    
    • 路由
    Application([
        (r'/(.+)/([0-9]+)', MainHandler),
        # (r'/(?P<name>.+)/(?P<age>[0-9]+)', MainHandler),
    ])
    
    • URL

    http://127.0.0.1:8000/name/xiaoming

    相关文章

      网友评论

          本文标题:tornado_输入输出

          本文链接:https://www.haomeiwen.com/subject/jffzdqtx.html