flask里面本身支持字符串,浮点型,整形以及路径,其实这些已经足够用了,但是如果你就是要想它支持正则,也是可以的,我们可以扩展一下它,使他也支持正则。
from flask import Flask, views, url_for
from werkzeug.routing import BaseConverter
app = Flask(import_name=__name__)
#1.写RegexConverter装换器类
class RegexConverter(BaseConverter):
"""
自定义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.将转换器类添加到flask的默认路由系统字典中
app.url_map.converters['regex'] = RegexConverter
@app.route('/index/<regex("\d+"):nid>')#系统会给你自动匹配正则
#正则匹配成功后进入视图函数之前会调用to_python函数,进行二次处理
def index(nid):
print(nid)
return 'Index'
if __name__ == '__main__':
app.run()