问题: flask框架路由的转换器提供三种: init, float, path。并不支持正则表达式,所以需要自行创建正则表达式的转换器.
# 字符串
@app.route('/user/<username>')
def user(username):
return 'User %s' % username
# init整型
@app.route('/user/<init:user_id>')
def user(user_id):
return 'User %d' % user_id 复制代码
自定义正则表达式规则的路由转换器:
from flask import Flask
from werkzeug.routing import BaseConverter
# 自定义类并继承BaseConverter类
class RegexConverter(BaseConverter):
# 构造函数
def __init__(self, url_map, *items):
super(RegexConverter, self).__init__(url_map)
self.regex = items[0]
# 初始化转换器名称
app.url_map.converters['regex'] = RegexConverter# 路由匹配
@app.route('/nav/<regex("[a-z]+"):nav_name>')
def nav(nav_name):
return 'Nav %s' % nav_name复制代码
总结: 正则转换器可在项目或应用初始化文件中定义,并全局使用