• 09.Tornado_获取请求参数


    1.概述

    在网络应用中,数据量庞大。为了提高用户体验度,让客户端根据自己的需求填写数据筛选条件。在tornado中,为了完成这个功能,在RequestHandler类为我们提供如下函数来接收参数:

    1. get_argument:具有给定名称的参数的值
    2. get_arguments:具有给定名称的参数列表
    3. get_query_argument:从查询字符串中返回具有给定名称的参数的值
    4. get_query_arguments:返回具有给定名称的查询参数的列表
    5. get_body_argument:从请求主体返回具有给定名称的参数的值
    6. get_body_arguments:返回具有给定名称的主体参数列表

    若上述方法都无法获取就使用request属性。

    2.总结

    获取查询参数建议使用:get_argument get_arguments get_query_argument get_query_arguments
    获取查询参数不建议使用:get_body_argument get_body_arguments
    获取请求体参数建议使用:get_argument get_arguments get_body_argument get_body_arguments
    获取请求体参数不建议使用:get_query_argument get_query_arguments

    3.测试代码

    from tornado import web 
    from tornado import ioloop
    
    class IndexHandler(web.RequestHandler):
        def get(self):
            self.write('get请求')
            '''
                获取查询参数请求,可以使用如下方法
                1. get_argument:具有给定名称的参数的值
                2. get_arguments:具有给定名称的参数列表
                3. get_query_argument:从查询字符串中返回具有给定名称的参数的值
                4. get_query_arguments:返回具有给定名称的查询参数的列表
            '''
            # name = self.get_argument('name')
            # pwd = self.get_argument('pwd')
            # hobby = self.get_arguments('q')
            # 效果:sxt===123===['吃饭', '睡觉', '玩手机']
    
            # name = self.get_query_argument('name')
            # pwd = self.get_query_argument('pwd')
            # hobby = self.get_query_arguments('q')
            # 效果:sxt===123===['吃饭', '睡觉', '玩手机']
    
            # 不推荐使用!!!!!
            # name = self.get_body_argument('name')
            # pwd = self.get_body_argument('pwd')
            # hobby = self.get_body_arguments('q')
            # 效果:400 GET /?name=sxt&pwd=123&q=%E5%90%83%E9
            # %A5%AD&q=%E7%9D%A1%E8%A7%89&q=%E7%8E%A9%E6%89%8B%E6%9C%BA (127.0.0.1) 3.02ms
    
            # print(f'{name}==={pwd}==={hobby}')
    
        def post(self):
            self.write('post请求123')
            '''
                获取请求体参数,可以使用如下方法
                1. get_argument:具有给定名称的参数的值
                2. get_arguments:具有给定名称的参数列表
                5. get_body_argument:从请求主体返回具有给定名称的参数的值
                6. get_body_arguments:返回具有给定名称的主体参数列表
            '''
    
            # name = self.get_argument('name')
            # pwd = self.get_argument('pwd')
            # hobby = self.get_arguments('q')
            # 效果:sxt===1234===['吃饭', '睡觉', '打豆豆']
    
            # name = self.get_body_argument('name')
            # pwd = self.get_body_argument('pwd')
            # hobby = self.get_body_arguments('q')
            # 效果:sxt===1234===['吃饭', '睡觉', '打豆豆']
    
            # name = self.get_query_argument('name')
            # pwd = self.get_query_argument('pwd')
            # hobby = self.get_query_arguments('q')
            # 效果:400 POST / (127.0.0.1) 2.99ms
            # print(f'{name}==={pwd}==={hobby}')
    
    
            # 获取请求参数时raw数据时,以上方法都无法获取,可能通过request.body对象
            # 但是bytes,需要数据转换decode()转化成字符串
            # 如果str是应该dict类型,可以通过json.loads进行数据转化
            args = self.request.body.decode('utf-8')
            from json import loads
            args = loads(args)
            print(args.get('name'))
            # 效果:sxt
    
            
    
    
        
    if __name__ == '__main__':
        app = web.Application([('/', IndexHandler)], debug = True)
        app.listen(8000)
        ioloop.IOLoop.current().start()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
  • 相关阅读:
    数据分析(1)——如何用postgres快速找出数据库中所有表格包含空值的列
    css flex:1;详解,配合demo效果解答
    mac电脑版数字图像处理软件:ACDSee Photo Studio 9最新 for Mac
    线程邮箱.
    VIGC:自问自答,高质量视觉指令微调数据获取新思路
    CORTEX-A7芯片中断系统基本原理与控制方法
    spring boot项目资源跳转,及引入js、css和a标签,ajax等的路径问题
    头歌实践--实验八 回溯法
    【示波器专题】示波器有源探头为什么常常做成分体式?
    某公司二面面试题总结
  • 原文地址:https://blog.csdn.net/m0_63953077/article/details/127709298