flask 自定义转换器
from flask import Flask from flask import url_for from flask import redirect from werkzeug.routing import BaseConverter """ 路由提取参数与自定义路由转化器进阶 """ app = Flask(__name__, static_url_path='/static', static_folder='static', template_folder='templates') # 万能转换器 class RegexConverter(BaseConverter): def __init__(self, url_map, regex): # 调用父类的初始化方法 super(RegexConverter, self).__init__(url_map) # 将正则表达式的参数保存到对象的属性中,flask会去使用这个属性来进行路由的正则匹配 self.regex = regex # self.regex 固定的属性,专门用来存放正则表达式 def to_python(self, value): """""" print("to_python方法被调用") # return "abc" # value是在路径进行正则表达式匹配的时候提取的参数 return value def to_url(self, value): """使用url_for的方法的时候被调用""" print("to_url方法被调用") # return "15811111111" return value # 将自定义的转换器添加到flask的应用中 app.url_map.converters["re"] = RegexConverter # re(参数): 参数传入正则表达式,这样就可以转换任何你传入的规则 @app.route("/send_phone/<re(r'1[34578]\d{9}'):mobile_num>") def send_phone(mobile_num): return "send phone to %s" % mobile_num @app.route("/index") def index(): url = url_for("send_sms", mobile_num="18922222222") # /send/18922222222 return redirect(url) if __name__ == '__main__': app.run(debug=True)