Tornado路由管理

Tornado还提供了多应用程序路由对象---tornado.web.url.这个对象可以让我们更加系统化的管理路由模块,比如创建一个简单的tornado服务

import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        param1 = self.get_arguments('param1')[0]
        param2 = self.get_arguments('param2')[0]
        host=self.request.headers.get('Cookie')
        print(host)
        print(param1)
        print(param2)
        self.write(str(param1)+str(param2))

class UserHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('首页')
def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
        (r"/user/", UserHandler),
    ])


if __name__ == "__main__":
    app = make_app()
    app.listen(8881)
    tornado.ioloop.IOLoop.current().start()

​ 上述代码中的web.Application对象会传入一个列表对象参数,分别对应首页模块和用户模块,现在这种情况看起来还不错。

​ 如果服务中方法个数有10个或者更多个呢?这个时候就不建议写在一个文件里面了,因为代码不易维护且显得很臃肿,可以考虑将方法分文件处理。tornado.web.url可以为我们提供在多个文件中注册路由的功能,类似插线板,我们最终只需将这一个或多个插线板插导主线路(main.py)即可

​ 比如服务中有一个用户模块user.py,通过tornado.web.url可以对其路由进行注册,如下所示:

app/t1.py


from tornado.web import url
import tornado.web


class UserHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('首页')


urlpatterns = [
    url('/user/',UserHandler)
]

main.py

import tornado.ioloop
import tornado.web
from app import t1


class MainHandler(tornado.web.RequestHandler):
    def get(self):

        self.write('不开心')

urlpatterns = [
    (r"/",MainHandler),
]


urlpatterns += (t1.urlpatterns)

#创建tornado实例
application = tornado.web.Application(urlpatterns,debug=True)

if __name__ == '__main__':
    application.listen(8001)
    tornado.ioloop.IOLoop.instance().start()



posted @ 2024-01-29 22:23  乐乐乐乐乐乐樂  阅读(26)  评论(0)    收藏  举报
jQuery火箭图标返回顶部代码