<tornado>tornado实战2------路由解析

本文详细介绍了Tornado Web框架中URL路由器的配置方式,包括固定字串路径、参数字串路径、带默认值的参数路径以及多参数路径的使用。通过示例展示了如何匹配和处理不同类型的URL,以及如何将参数传递给RequestHandler的处理方法。内容涵盖正则表达式在路由中的应用,以及如何处理未提供参数的情况。
摘要由CSDN通过智能技术生成

向web.Application对象传递的第一个参数URL路由器映射列表的配置方式是:用正则字符串进行路由匹配。

tornado的路由字符串有两种:固定字串路径和参数字串路径

1、固定字串路径

固定字串即普通的字符串固定匹配,如:

Handlers=[("/",MainHandler),     #只匹配根路径
          ("/entry",EntryHandler),   #只匹配/entry
          ("/entry/2021",Entry2021Handler),    #只匹配/entry/2021
          ]

2、参数字串路径

参数字串可以将具备一定模式的路径映射到同一个RequestHandler中处理,其中路径中的参数部分用’()'标识,如:

handlers=[
    ((r"/entry/[^/]+"),EntryHandler),
]

class EntryHandler(tornado.web.RequestHandler):
    def get(self,slug):
        entry=self.db.get("select * from entries where slug =%s",slug)
        if not entry:
            raise tornado.web.HTTPError(404)
        self.render("entry.html",entry=entry)

其中的/entry/([^/]+)定义"以/entry/开头的url"模式,url尾部的变量部分以参数的形式传递给RequestHandler的get()函数,在这里将该参数命名为slug

3、带默认值的参数路径

handlers=[((r"/entry/[^/]+"),EntryHandler),]模式定义了客户端必须输入路径参数,比如,能匹配如下路径:

http://xx.xx.xx.xx/entry/abc
http://xx.xx.xx.xx/entry/2021-03-28

但是无法匹配:

http://xx.xx.xx.xx/entry

对于需要匹配客户端未传入时的路径,则需要如下方法改变url路径和对get()函数的定义:

#url handler
handlers=[
    ((r"/entry/[^/]*"),EntryHandler),
]

class EntryHandler(tornado.web.RequestHandler):
    def get(self,slug='default'):
        entry=self.db.get("select * from entries where slug =%s",slug)
        if not entry:
            raise tornado.web.HTTPError(404)
        self.render("entry.html",entry=entry)

首先是*取代了"/entry/[^/]+"中的+,然后为RequestHandler子类的get()函数的slug参数赋了默认值default

4、多参数路径

参数路径还允许在一个url模式中定义多个可变参数,如:

handlers=[
	(r'/(\d{4})/(\d{2})/(\d{2})/([a-zA-Z\-0-9\.:,_]+)/?',DetailHandler),
]

class DetailHandler(tornado.web.RequestHandler):
	def get(self,year,month,day,slug):
		self.write("%d-%d-%d %s"%(year,month,day,slug))

在此定义的URL模式有四个参数,year,month,day,slug

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值