flask中路由转换器

1.flask自带的转换器

@app.route("/goods/<int:goods_id>")
def goods_detail(goods_id):
    return "goods detail %s" % goods_id 


@app.route("/user/<int:id>")
def hello_itcast(id):
    return "hello itcast %d"%id

#转换器:int接受整数;float同int,但是接受浮点数;path默认的相似,但也接受斜线;

@app.route("/foods/<ddd>") #不加转换器类型,默认是普通字符串规则(除了/的字符)
def foods(ddd):
    return "food page %s"%ddd

 

2.定义自己的转换器

用类的方式定义。

from werkzeug.routing import BaseConverter

#1.自定义转换器
class RegexConverter(BasseConverter): #继承
    ''''''
    #pass
    def __init__(self,url_map):  #万能的转换器,url_map路由映射列表
        #调用父类的初始方法
        super(RegexConverter,self).__init__(url_map)
        #将正则表达式的参数保存在对象的属性中,flask会去使用这个属性来进行路由的正则匹配    
        self.regex = regex       #正则表达式


    #2.将自定义的转换器,添加到flask的应用中。app.url_map.converters是一个字典
    #app.url_map.converters["re"] = RegexConverter 
    #定义后以键值对的方式保存,并不是RegexConverter()的!没加括号,代表把类直接存进去了

'''
#172.0.0.1:5000/send/18677273487 #手机号
@app.route("/send/<()>")
def send_sms(mobile):
    return "send sms to %s"%mobile
'''

#172.0.0.1:5000/send/1867727348
@app.route("/send/<re:mobile>")
def send_sms(mobile):
    return "send sms to %s"%mobile

#172.0.0.1:5000/send/1867727348
@app.route("/send/<re(r'1[34578]\d{9}'):mobile>") #括号可以传参
def send_sms(mobile):
    return "send sms to %s"%mobile

效果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值