Flask框架中路由的定义和使用方法
1.定义路由
定义路由的三个细节
- 路由对应的URL必须以 / 开头
- app.url_map 获取所有路由规则,路由规则中主要包含 URL资源段、支持的请求方式、视图函数标记 三部分内容
- app.route() 的 methods参数 指定路由支持的请求方式
from flask import Flask
app = Flask(__name__)
# 1.路由对应的URL必须以/开头
# 2.通过app的url_map属性获取所有的路由规则 (URL资源段 支持的请求方式 视图函数标记)
# 3.可以通过route方法的methods参数指定路由支持的请求方式
@app.route('/hello', methods=['post', 'get'])
def index():
return "index"
if __name__ == '__main__':
print(app.url_map)
# 获取路由信息
# for rule in app.url_map.iter_rules():
# print(rule.rule, rule.methods, rule.endpoint)
app.run(debug=True)
2.路由变量
- 路由变量的作用是 传递URL路径参数, 实现动态URL
- 格式: /xx/<路由变量>
from flask import Flask
app = Flask(__name__)
# 路由变量: 传递URL路径参数
# 格式: /user/<路由变量名>
@app.route('/user/<userid>')
def index(userid): # 必须定义同名形参接收路由变量的值
print(userid)
return "index"
if __name__ == '__main__':
app.run(debug=True)
3.路由转换器
- 路由转换器的作用是 对URL传递的参数进行格式校验, 类似Django设置URL时的正则表达式参数
- 格式: /xx/<转换器名:路由变量>
- 所有的转换器类都继承自 BaseConverter 类
from flask import Flask
app = Flask(__name__)
# 路由转换器: 对路由变量进行格式校验 条件不满足返回404
# 格式: /user/<路由转换器名:路由变量>
@app.route('/user/<int:userid>') # int: 内置转换器, 要求1-n个整数
def index(userid):
print(userid)
return "index"
if __name__ == '__main__':
app.run(debug=True)
4.自定义转换器
- 除了使用内置的变量转换器, 开发者还可以自定义转换器, 更加灵活的校验路由变量
- 使用自定义转换器的步骤
1.定义转换器类, 继承BaseConverter
2.设置regex属性 (正则匹配规则)
3.应用添加自定义转换器
# 自定义转换器:
# 1.定义转换器类, 继承BaseConverter
# 2.设置regex属性 (正则匹配规则)
# 3.添加自定义转换器
from flask import Flask
from werkzeug.routing import BaseConverter
app = Flask(__name__)
# 1.定义转换器类
class MobileConverter(BaseConverter):
# 2.设置regex属性(匹配规则)
regex = '1[3-9]\d{9}$' # 不要设置开头的^
# 3.添加自定义转换器
app.url_map.converters['mob'] = MobileConverter
@app.route('/user/<mob:mobile>')
def index(mobile):
print(mobile)
return "index"
if __name__ == '__main__':
# 获取所有的转换器 {转换器名: 转换器类}
# print(app.url_map.converters)
app.run(debug=True)