falsk路由自定义正则匹配
# -*- coding: utf-8 -*- """ flask 自定义 url 匹配正则表达式 """ from flask import Flask,views,url_for from werkzeug.routing import BaseConverter app=Flask(import_name=__name__) # 1 写 RegexConverter 类 class RegexConverter(BaseConverter): """ 自定义 url 匹配正则表示式 to_python to_url 基本上是固定写法 等于重写了 BaseConverter 中 to_python to_url 方法 """ def __init__(self,map,regex): super(RegexConverter,self).__init__(map) self.regex=regex def to_python(self, value): """ 路由匹配时 匹配成功后传递给视图函数中参数的值 :param value: :return: """ return value def to_url(self, value): """ 使用url_for 反向生成url 时 传递的参数经过该方法处理 返回的值用于生成url中的参数 :param value: :return: """ val=super(RegexConverter, self).to_url(value) return val # 2 将RegexConverter 添加到flask中 app.url_map.converters["regex"]=RegexConverter # 3 regex('\d+') 这句 实际上 等于RegexConverter('\d+') @app.route("/index/<regex('\d+'):nid>") def index(nid): print(nid) print(url_for('index',nid='888')) return "Home" if __name__ == '__main__': app.run()