tornado 中的路由列表

tornado 中的路由列表

路由列表
  • 路由跳转的两种方式:
    • 直接采用路由列表的元组第一个参数 ‘<a href="/login">go to login</a>’
    • 采用url构造函数,通过别名的方式跳转’<a href=%s>go to login</a>’ % self.reverse_url(‘name’)
import tornado
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import define, options, parse_config_file
from tornado.web import Application, RequestHandler, url

class IndexHandler(RequestHandler):
    def get(self):
        self.write('<a href="/login">go to login</a>')  # 跳转到LoginHandler
        # self.write('<a href=%s>go to login</a>' % self.reverse_url('login_url'))  # 同上

class LoginHandler(RequestHandler):
    # 重写父类方法,获取动态设置的参数
    def initialize(self, uname, uage):
        self.uname = uname
        self.uage = uage

    def get(self):
        # 给用户的响应的内容
        # write方法只能接收一个字符串类型的参数
        self.write(self.uname + ":" + self.uage)  # 张三:35

# 创建路由列表
url_list = [('/', IndexHandler),
			('/login', LoginHandler, {'uname':'张三','uage':'35'})]
            # url('/login', LoginHandler, {'uname':'张三','uage':'35'}, name='login_url')
            # url对象,可以通过调用reverse_url方法,传入name的值获得url的值
            ]
  • url顺序传参,采用正则表达式分组匹配
class PythonHandler(RequestHandler):
    def get(self, s1='', s2=''): # 注意给位置参数设置默认值
    # '/python/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)' 参数为s1和s2
        self.write('python page')
        if s1:
            self.write(s1)
        if s2:
            self.write(s2)

url_list = [('/python', PythonHandler),
            ('/python/([a-zA-Z0-9]+)', PythonHandler),
            ('/python/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)', PythonHandler),
            ]
  • url关键字传参,采用正则表达式分组的别名
class PythonHandler(RequestHandler):
    def get(self, *args, **kwargs):
        self.write('python page')
        s1 = kwargs.get('s1', '') # 获取参数值
        s2 = kwargs.get('s2', '')
        if s1:
            self.write(s1)
        if s2:
            self.write(s2)

url_list = [('/python', PythonHandler),
            ('/python/(?P<s1>[a-zA-Z0-9]+)', PythonHandler), # 别名为s1,相当于s1='***'
            ('/python/(?P<s1>[a-zA-Z0-9]+)/(?P<s2>[a-zA-Z0-9]+)', PythonHandler),
            ]
发布了75 篇原创文章 · 获赞 87 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43883022/article/details/102820873