Flask自定义正则路由方法
1 # coding:utf-8 2 from flask import Flask, current_app, redirect, url_for 3 from werkzeug.routing import BaseConverter 4 app = Flask(__name__) 5 6 @app.route("/goods/<int:goods_id>") 7 # @app.route("/goods/<goods_id>") 不加转换器类型,默认是普通字符串规则(除了/的字符) 8 def goods_detail(goods_id): 9 """定义视图的函数""" 10 return "good detail page %s" % goods_id 11 12 13 # 定义一个类,用werkzeug.routing的BaseConverter为父类,继承。 14 # 定义自己的转换器 15 class mobileConverter(BaseConverter): 16 def __init__(self, url_map): 17 super().__init__(url_map) 18 self.regex = r'1[34578]\d{9}' 19 20 # class RegexConverter(BaseConverter): 21 # 创建一个对象,并找到regex正则表达式 22 #def __init__(self, url_map, regex): 23 #调用父类的初始化方法 24 #super().__init__(url_map) 25 # 将正则表达式的参数保存到对象属性中,flask会去使用这个属性来进行路由的正则匹配 26 #self.regex = regex 27 28 # 将自定义的转换器添加到flask的应用中 29 # app.url_map.converters["re"] = RegexConverter 30 app.url_map.converters["mobile"]= mobileConverter 31 32 # 正则表达式 re(r'正则内容') <re>: 33 # @app.route("/send/<re(r'1[34578]\d{9}'):mobile>") 34 @app.route("/send/<mobile:mobile_num>") 35 def send_sms(mobile_num): 36 return "send to %s" % mobile_num 37 # def send_sms(mobile): 38 # return "send sms to %s" % mobile 39 40 41 42 43 if __name__ == '__main__': 44 print(app.url_map) 45 app.run(debug = True)
本文来自博客园,作者:爱薇仔,转载请注明原文链接:https://www.cnblogs.com/zh2000/p/12372493.html