Tornadao—正则提取uri

  • 正则


    tornado中对于路由映射也⽀持正则提取uri,提取出来的参数会作为
    RequestHandler中对应请求⽅式的成员⽅法参数。若在正则表达式中定义了名
    字,则参数按名传递;若未定义名字,则参数按顺序传递。提取出来的参数会作为
    对应请求⽅式的成员⽅法的参数。

    import tornado.web
    import tornado.ioloop
    import tornado.httpserver
    import tornado.options
    from tornado.options import options, define
    from tornado.web import RequestHandler
    define("port", default=8000, type=int, help="run server on the given
    port.")
    
    class IndexHandler(RequestHandler):
     def get(self):
     self.write("hello itcast.")
    class SubjectCityHandler(RequestHandler):
     def get(self, subject, city):
     self.write(("Subject: %s<br/>City: %s" % (subject, city)))
    class SubjectDateHandler(RequestHandler):
     def get(self, date, subject):
     self.write(("Date: %s<br/>Subject: %s" % (date, subject)))
    if __name__ == "__main__":
     tornado.options.parse_command_line()
     app = tornado.web.Application([
     (r"/", IndexHandler),
     (r"/sub-city/(.+)/([a-z]+)", SubjectCityHandler), # ⽆名⽅式
     (r"/sub-date/(?P<subject>.+)/(?P<date>\d+)",
    SubjectDateHandler), # 命名⽅式
     ])
     http_server = tornado.httpserver.HTTPServer(app)
     http_server.listen(options.port)
     tornado.ioloop.IOLoop.current().start()
    import tornado.web
    import tornado.ioloop
    import tornado.options
    from tornado.web import url
    
    from settings import params
    
    
    # 定义接收参数的名称和类型,缺省值
    tornado.options.define('p',default=9090,type=int)
    
    class IndexHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("不到长城非好汉")
    
    
    class ShowHandler(tornado.web.RequestHandler):
        # 接收路由中的附加参数,参数个数和initialize中参数一致
        def initialize(self,name,age):
            self.name = name
            self.age = age
        # def initialize(self,**kwargs):
        #     self.name = kwargs.get('name')
        #     self.age = kwargs.get('age')
    
        def get(self):
            self.write("姓名:{}".format(self.name))
    
    
    class ListHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("路由")
    
    
    class DetailHandler(tornado.web.RequestHandler):
        def get(self,aid):
            print(aid,type(aid))
            self.write("详细信息"+aid)
    
    
    def main():
        # 接收命名行参数
        tornado.options.parse_command_line()
        # 路由的写法
        app = tornado.web.Application(
            [(r'/',IndexHandler),
             (r'/show/',ShowHandler,{'name':'admin','age':20}),
             url(r'/list/',ListHandler,name='list'),
             (r'/detail/(\d+)/',DetailHandler),
             ],
            **params
        )
        app.listen(tornado.options.options.p)
        tornado.ioloop.IOLoop.current().start()
    if __name__ == '__main__':
        main()
发布了259 篇原创文章 · 获赞 6 · 访问量 3540

猜你喜欢

转载自blog.csdn.net/piduocheng0577/article/details/105059497
URI