Flask 框架学习 (二 、路由)

查询路由信息

  • 命令行方式
    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版权协议,转载请附上原文出处链接和本声明。