tornado中url传参

作者 夜狼荼 2020年04月03日 15:14 阅读 1136

tornado中url传参

1.简单说明Handler执行顺序

# RequestHandler执行顺序,
# 1.先执行 initialize 初始化,
class UserrHandler(RequestHandler):

    def initialize(self, status_code: int) -> None:
        pass
# 2. 在执行get/post....等之前调用,一般无论如何,都要重写此方法以执行公共初始化
    def prepare(self) -> None:
        pass

url传参示例:

url 正则方法

参考: https://www.runoob.com/python/python-reg-expressions.html

application = tornado.web.Application(
        handlers=[
            (r'/index',IndexHandler),
            (r'/sub/(.+)/([0-9]+)', SubjectHandler), #用正则表达式(元字符+数字)
            (r'/user/(?P<name>.+)/(?P<age>[0-9]+)', UserHandler), #这样就不是按照位置来传参了,而是按照变量名来传参了
        ],
        template_path = 'templates',
        debug=True
    )

Handler获取参数

# 1.方法中直接获取方法
class SubjectHandler(tornado.web.RequestHandler):
    def get(self,name,age): #下面的正则按照这里的位置来定义的
        self.write('name:%s<br> age:%s'%(name,age))

class UserHandler(tornado.web.RequestHandler):
    def get(self,age,name):
        self.write('name:%s<br> age:%s'%(name,age))


# 2. #重写RequestHandler中initialize方法
#    获取动态设置的参数(greeting,info)
class UserHandler(tornado.web.RequestHandler):
# 按照变量名传参,位置随意
	def initialize(self,age,name):
		self.age = age
		self.name = name

	def get(self, *args, **kwargs):
		# `self.age` 直接调用参数
		pass

发表评论