-
正则
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()
Tornadao—正则提取uri
猜你喜欢
转载自blog.csdn.net/piduocheng0577/article/details/105059497
今日推荐
周排行