• python tornado(4)路由传参


    Tornado合集

    本文章使用的Tornado目录结构

    一、基础传参

    需要修改:

    1. application中的映射
    2. views/index中的接口

    1.1 application

    在路由映射中添加了字典,内部传递了两个参数。

    import tornado.web
    from views import index
    import config
    
    class Application(tornado.web.Application):
        def __init__(self):
            handlers = [
                (r'/',index.IndexHandler,{"userid":"1","username":"gtd"})
            ]
            # 调用父类Application,传递handlers,传递配置
            super(Application,self).__init__(handlers,**config.settings)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    1.2 views/index

    添加了def initialize(self,userid,username): 函数并接收两个参数。

    from tornado.web import RequestHandler
    
    # 业务处理类
    class IndexHandler(RequestHandler):
        # 传参,该方法会在HTTP方法前调用
        def initialize(self,userid,username):
            self.userid = userid
            self.username = username
    
        # 处理get请求
        def get(self,*args,**kwargs):
            print(self.username,self.userid)
            self.write("hello world")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    二、服务器传参

    2.1 提取url的特定部分

    2.1.1 在application中添加指定路由,在路由中做正则匹配.

    如下所示
    (r’/send_parameter/(\w+)/(\w+)',index.SendParameterUrlHandler)
    完整代码如下:

    import tornado.web
    from views import index
    import config
    
    class Application(tornado.web.Application):
        def __init__(self):
            handlers = [
                (r'/',index.IndexHandler,{"userid":"1","username":"gtd"}),
                # 将参数融入地址
                (r'/send_parameter/(\w+)/(\w+)',index.SendParameterUrlHandler)
            ]
            # 调用父类Application,传递handlers,传递配置
            super(Application,self).__init__(handlers,**config.settings)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.1.2还需要在index中添加对应接口

    # 从url中获取参数
    class SendParameterUrlHandler(RequestHandler):
        def get(self,name,id,*args,**kwargs):
            print(f"SendParameterUrlHandler : {name}--{id}")
            self.write("厉害")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    完整代码如下:

    from tornado.web import RequestHandler
    
    # 业务处理类
    class IndexHandler(RequestHandler):
        # 传参,该方法会在HTTP方法前调用
        def initialize(self,userid,username):
            self.userid = userid
            self.username = username
    
        # 处理get请求
        def get(self,*args,**kwargs):
            print("IndexHandler : ",self.username,self.userid)
            self.write("hello world")
    
    # 从url中获取参数
    class SendParameterUrlHandler(RequestHandler):
        def get(self,name,id,*args,**kwargs):
            print(f"SendParameterUrlHandler : {name}--{id}")
            self.write("厉害")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2.2 查询字符串(GET)

    2.2.1 在application中添加指定路由,如下所示。

    (r’/send_parameter_get’, index.SendParameterGetHandler)

    完整代码:

    import tornado.web
    from views import index
    import config
    
    class Application(tornado.web.Application):
        def __init__(self):
            handlers = [
                (r'/',index.IndexHandler,{"userid":"1","username":"gtd"}),
                # 将参数融入地址
                (r'/send_parameter/(\w+)/(\w+)',index.SendParameterUrlHandler),
                # get参数传递
                (r'/send_parameter_get', index.SendParameterGetHandler)
            ]
            # 调用父类Application,传递handlers,传递配置
            super(Application,self).__init__(handlers,**config.settings)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.2.2在index中编写对应接口,并接收参数

    # get参数获取
    class SendParameterGetHandler(RequestHandler):
        def get(self,*args,**kwargs):
            name = self.get_query_argument(name="name",default="NO NAME",strip=False)
            id = self.get_query_argument(name="id",default="NO ID",strip=True)
            print(f"SendParameterGetHandler : {name}--{id}")
            self.write("get参数获取")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    完整代码:

    from tornado.web import RequestHandler
    
    # 业务处理类
    class IndexHandler(RequestHandler):
        # 传参,该方法会在HTTP方法前调用
        def initialize(self,userid,username):
            self.userid = userid
            self.username = username
    
        # 处理get请求
        def get(self,*args,**kwargs):
            print("IndexHandler : ",self.username,self.userid)
            self.write("hello world")
    
    # 从url中获取参数
    class SendParameterUrlHandler(RequestHandler):
        def get(self,name,id,*args,**kwargs):
            print(f"SendParameterUrlHandler : {name}--{id}")
            self.write("url中参数获取")
    
    # get参数获取
    class SendParameterGetHandler(RequestHandler):
        def get(self,*args,**kwargs):
            name = self.get_query_argument(name="name",default="NO NAME",strip=False)
            id = self.get_query_argument(name="id",default="NO ID",strip=True)
            print(f"SendParameterGetHandler : {name}--{id}")
            self.write("get参数获取")
    
    • 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

    2.3 请求体携带(POST)

    2.3.1 application编写路由

    (r’/send_parameter_post’, index.SendParameterPostHandler)

    2.3.2 ./templates/indx.html

    简单编写前端

    
    
    
        
        Title
    
    
        POST请求页面
    
    name: id:
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.3.3 index接口编写

    class SendParameterPostHandler(RequestHandler):
        # get请求
        def get(self,*args,**kwargs):
            # 返回页面
            self.render('index.html')
    
        def post(self,*args,**kwargs):
            name = self.get_body_argument("name",default="NO NAME")
            id = self.get_body_argument("id",default="NO NAME")
            print(f"SendParameterPostHandler : {name}--{id}")
            self.write("POST请求成功")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    asp.net图书管理系统
    COLE HERSEE 48408 工业4.0、制造业X和元宇宙
    【算法】通信线路(二分,堆优化版dijkstra)
    法国橡木与美国橡木:酒桶如何影响葡萄酒?
    IO作业:exit、fork,getppid、getpid创建一个孤儿进程,创建一个僵尸进程
    用JS实现简单的屏幕录像机
    初学phar反序列化
    Redis过期删除策略和内存淘汰策略的区别
    计算机网络 0815
    【POJ No. 1190】 生日蛋糕
  • 原文地址:https://blog.csdn.net/gtd54789/article/details/126028150