您的位置:首页 > 其它

Flask 框架学习 (二 、路由)

2020-04-22 12:35 351 查看

查询路由信息

  • 命令行方式
    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)

  • 点赞
  • 收藏
  • 分享
  • 文章举报
阳光在浪尖跳动ゞ 发布了9 篇原创文章 · 获赞 1 · 访问量 153 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: