用法1:
#传递参数,自定义参数转换器+正则表达式
@app.route("/goods/<int:goods_id>") #不加int默认字符串规则(除了斜线/的字符)
def goods_detail(goods_id):
print(goods_id)
return "返回goods_id=%d"%goods_id
# 1.自定义参数转换器
class RegexConverter(BaseConverter):
def __init__(self,url_map,regex):
#调用父类的初始化
super(RegexConverter,self).__init__(url_map)
#将正则表达式的参数保存到对象的属性中,flask会使用这个属性来进行路由的正则匹配
self.regex=regex
#127.0.0.1:5000/send/18112345678
# 2.将自定义的转换器加到flask的应用中
app.url_map.converters["re"]=RegexConverter
# 3
@app.route("/send/<re(r'1[345789]\d{9}'):mobile>") #使用自定义的转换器参数
def send_detail(mobile):
print(mobile)
return "mobile=%s"%mobile
用法2:
class MobileConverter(BaseConverter):
def __init__(self,url_map):
super(MobileConverter,self).__init__(url_map)
self.regex=r'1[345789]\d{9}' #self.regex是固定名字,不可更改
app.url_map.converters["mobile"]=MobileConverter
@app.route("/send2/<mobile:mobile>") #使用自定义的转换器参数
def send2_detail(mobile):
print(mobile)
return "mobile=%s"%mobile