# url_for 相当于django中的reverser
from flask import Flask, redirect, url_for
from werkzeug import BaseConverter
class RegexConverter(BaseConverter):
def __init__(self, url_map, regex):
# 调用父类初始化方法
super(RegexConverter,self).__init__(url_map)
# 将路由中正则表达式保存到regex正则对象属性中,flask会自动进行正则匹配
self.regex = regex
def to_python(self, value):
'''
to_python方法是直接接受下面路由参数<re(1[3-9]\d{9}):mobile>并进行高级处理,并传递给视图send_sms(mobile)进行页面渲染
具体高级验证自己设置
'''
if value:
return value
return '无效号码'
def to_url(self, value):
'''
to_url 方法是为了处理重定向传过来的值mobile='15695020013'
具体高级验证自己设置
'''
return value
# 将自定义转换器添加到flask应用中
app.url_map.converter['re'] = RegexConverter
@app.route('/send/<re(1[3-9]\d{9}):mobile>')
def send_sms(mobile):
return 'send sms to {}'.format(mobile)
@app.route('/index'):
def index():
url = url_for('send_sms', mobile='15695020013')
return redirect(url)
西北乱跑娃 --- flask自定义转换器实现url参数匹配验证
最新推荐文章于 2022-12-13 19:29:49 发布