tornado中的url配置

本文介绍了Tornado框架中URL配置的各种用法,包括如何匹配带数字或字符串的URL,处理斜杠结尾的影响,利用URL名称进行逻辑操作,传递初始化参数,以及提高URL配置的可读性等关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:如何实现url中带数字(字符串)类型的匹配?

class PeopleIdHandler(web.RequestHandler):
    async def get(self, id, *args, **kwargs):
        self.write("用户ID:{}".format(id))


class PeopleNameHandler(web.RequestHandler):
    async def get(self, name, *args, **kwargs):
        self.write("用户姓名:{}".format(name))


class PeopleInfoHandler(web.RequestHandler):
    async def get(self, name, age, gender, *args, **kwargs):
        self.write("用户姓名:{},用户年龄:{},用户性别:{},".format(name, age, gender))
……

urls = [
    # 匹配数字类型
    ("/people/(\d+)/", PeopleIdHandler),
    # 匹配字符串类型
    ("/people/(\w+)/", PeopleNameHandler),
    # 更丰富的匹配结合正则去实现……
    ("/people/(\w+)/(\d+)/(\w+)/", PeopleInfoHandler)

]

……




2:地址中有斜杠结尾和没斜杠结尾,访问会出现有成功和失败的情况?

url中 用户没输入斜杠时,程序自动补全,在url配置中最后加上/?即可

urls = [
    ("/people/(\d+)/?", PeopleIdHandler),
    ("/people/(\w+)/?", PeopleNameHandler),
    ("/people/(\w+)/(\d+)/(\w+)/?", PeopleInfoHandler)

]

3:在url中配置一个名称,在程序的执行逻辑中使用该名称实现一些操作

class PeopleIdHandler(web.RequestHandler):
    async def get(self, id, *args, **kwargs):
        # 实现跳转到/people/name的页面
        # reverse_url后传递参数的个数 根据url配置里的设定变动
        self.redirect(self.reverse_url("people_name", "bobby"))

……
urls = [
    tornado.web.URLSpec("/people/(\d+)/?", PeopleIdHandler, name="people_id"),
    tornado.web.URLSpec("/people/(\w+)/?", PeopleNameHandler, name="people_name"),
    tornado.web.URLSpec("/people/(\w+)/(\d+)/(\w+)/?", PeopleInfoHandler, name="people_info"),
    
]

4:在url中传递给handler一些初始化的参数

people_db = {"name":"people_db"}

# 如不同的业务使用的数据库不同时 
urls = [
    tornado.web.URLSpec("/people/(\d+)/?", PeopleIdHandler, people_db, name="people_id"),
    
]

# 在handler中获取到传递进来的值,在哪个方法中处理这个值

class PeopleIdHandler(web.RequestHandler):
    def initialize(self, name):
        self.db_name = name

    async def get(self, id, *args, **kwargs):
        # 实现跳转到/people/name的页面
        # reverse_url后传递参数的个数 根据url配置里的设定变动
        self.redirect(self.reverse_url("people_name", "bobby"))

5:在url配置中的推荐写法,提升可读性

urls = [
    # 在变量前 加上?P<>    ;<>内的值 变量名称要和后面用的保持一致
    tornado.web.URLSpec("/people/(?P<name>\w+)/(?P<age>\d+)/(?P<gender>\w+)/?", PeopleInfoHandler, name="people_info"),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值