查询路由信息
- 命令行方式
flask routes
- 在程序中获取
print(app.url_map)
- 如果想在程序中遍历路由信息,可以采用如下方式
for rule in app.url_map.iter_rules():
# rule.endpoint 视图函数的name
# rule.rule 路由地址
print('name={} path={}'.format(rule.endpoint, rule.rule))
- 同一路由可以装饰多个视图函数
- 同一视图多个路由装饰器
- 利用methods限制访问方式
指定请求方式
- 在 Flask 中,定义路由其默认的请求方式为
----------------- GET
------------------OPTIONS(自带)
----------------- HEAD(自带) - methods参数可以指定的请求方式 如 GET,POST
@app.route("/index", methods=["GET"])
def index():
return "hello world"
使用url_for进行反解析
from flask import Flask, redirect, url_for
# 创建flask的应用对象
# __name__表示当前的模块名字
app = Flask(__name__)
@app.route("/login", methods=["GET"])
def login():
# 使用 url_for 的函数,通过视图的名字找到对应的url路径
url = url_for("index")
return redirect(url) #重定向到/index
URL路径参数(动态路由)即转换器
- <>即是一个转换器,默认为字符串类型,即将该位置的数据以字符串格式进行匹配、并以字符串为数据类型类型
@app.route("/drwa/<int:id>", methods=["GET"])
def drwa(id):
return "传递的参数是:%d" % id
- Flask也提供其他类型的转换器
常用有
DEFAULT_CONVERTERS = {
'default': UnicodeConverter,
'string': UnicodeConverter,
'any': AnyConverter,
'path': PathConverter,
'int': IntegerConverter,
'float': FloatConverter,
'uuid': UUIDConverter,
}
- 自定义转换器
# 自定义转换器 必须要继承BaseConverter类
from werkzeug.routing import BaseConverter
class MobileConverter(BaseConverter):
"""手机号格式"""
regex = r"1[3-9]\d{9}" # 注意 regex 名字固定
# 将自定义的转换器添加到转换器字典中,并指定转换器使用时的名字为:mobile
app.url_map.converters["mobile"] = MobileConverter
@app.route("/mobile/<mobile:mobile_num>")
def mobile(mobile_num):
return "传递的手机号码是:{}".format(mobile_num)
版权声明:本文为qq_29499041原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。