博客
关于我
Python Flask 中的路由
阅读量:563 次
发布时间:2019-03-09

本文共 2738 字,大约阅读时间需要 9 分钟。

Flask 路由详解

Flask 是一款高效的微框架,其路由系统是核心功能之一。在很多 Web 应用中,接口通常遵循 RESTful API 设计风格,这种风格简洁而优雅,对开发者和用户都很友好。通过 Flask 的路由系统,开发者可以将 URL 映射到相应的视图函数,从而实现数据处理和返回。


一、Flask 路由的基本使用

在 Flask 框架中,route() 装饰器是实现路由映射的核心工具。装饰器的使用非常方便,开发者只需要关注业务逻辑和数据处理,不用担心路由配置。

前置条件

  • 创建一个名为 FlaskProject 的虚拟环境,项目目录下创建 flask_route.py 文件。
  • 在文件开头导入 Flask 和必要的模块:
    from flask import Flaskapp = Flask(__name__)
  • 使用 @app.route('/') 装饰后端功能,访问指定的 URL 视图函数。
  • 实现步骤

    from flask import Flaskapp = Flask(__name__)@app.route('/index')def index():    return render_template('route_one.html')if __name__ == '__main__':    app.run(debug=True)
    • @app.route('/index'):定义了当访问 /index 时会调用 index() 视图函数。
    • render_template('route_one.html'):将结果传递给模板文件进行展示。
    • app.run():开启 Flask 应用服务器。

    二、路由传参

    在实际应用中,API demands 通常需要动态处理数据。Flask 的路由允许将 URL 中的参数传递给视图函数。

    动态路由示例

    @app.route('/phone/
    ')def phone(num): return render_template('route_one.html', num=num)
    • URL 格式为 /phone/{num},例如 /phone/123
    • 视图函数接收 num 参数,返回模板文件,模板可展示数值。

    路由参数类型

    • Flask 会自动处理多种参数类型,如整数、字符串、浮点数等,默认转换为字符串。
    • 可指定类型:
      @app.route('/phone/
      ')

      使用 int 确定 num 为整数类型。


    三、正则匹配路由

    在有些场景中,需要对 URL 参数进行验证,确保符合特定格式。Flask 提供了强大的路由转换功能,允许使用正则表达式对 URL 参数进行匹配。

    自定义转换器

    Flask 的转换器接口允许开发者自定义规则,根据需求添加正则匹配功能。

  • 我们需要导入 werkzeug.routing 中的转换器基类:
    from werkzeug.routing import BaseConverter
  • 定义一个继承自 BaseConverter 的新转换器类:
    class RegexConverter(BaseConverter):    def __init__(self, url_map, *args):        super(RegexConverter, self).__init__(url_map)        self.regex = args[0]
    • regex属性用于存储正则表达式模式。
  • 将自定义转换器添加到 Flask 的 URL 映射中:
    app.url_map.converters['re'] = RegexConverter
  • 正则匹配路由示例

    @app.route('/phones/
    ')def phone_size(phone_num): return render_template('route_one.html', phone_num=phone_num)
    • URL 格式为 /phones/{符合正则规则的数字},例如 /phones/1234
    • 视图函数接收格式化后的 phone_num 参数。

    四、路由应用实例

    以下是完整的代码示例,展示了路由基础使用、路由传参以及正则匹配的综合应用:

    from flask import Flask, render_templatefrom werkzeug.routing import BaseConverterapp = Flask(__name__)@app.route('/index')def index():    return render_template('route_one.html')@app.route('/phone/
    ')def phone(num): return render_template('route_one.html', num=num)# 定义自定义正则转换器class RegexConverter(BaseConverter): def __init__(self, url_map, *args): super(RegexConverter, self).__init__(url_map) self.regex = args[0]# 将转换器添加到 Flask 的 URL 映射中app.url_map.converters['re'] = RegexConverter@app.route('/phones/
    ')def phone_size(phone_num): return render_template('route_one.html', phone_num=phone_num)if __name__ == '__main__': app.run(debug=True)

    路由配置说明

  • /index: 显然是默认访问页面。
  • /phone/123: 接收任意字母和数字参数,展示动态数值。
  • /phones/1234: 只接受数字,验证参数格式。
  • 这种配置方式既支持动态传参,也可以进行参数验证,适合复杂的 API 接口需求。


    总结

    Flask 的路由系统灵活且强大,支持动态传参和自定义转换器,可根据项目需求灵活配置。通过合理使用 route() 装饰器,开发者可以轻松实现高效的接口映射。当需要对 URL 参数格式进行验证时,自定义转换器是非常有用的工具。

    转载地址:http://mgspz.baihongyu.com/

    你可能感兴趣的文章
    PCI Express学习篇:Power Management(二)
    查看>>
    pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
    查看>>
    pcm转wav的方法及代码示例
    查看>>
    PC史上最悲剧的16次失败
    查看>>
    PC端恶意代码分析Lab1.1-5.1,从零基础到精通,收藏这篇就够了!
    查看>>
    PC端稳定性测试探索
    查看>>
    PC端编辑 但能在PC端模拟移动端预览的富文本编辑器
    查看>>
    PDB文件:每个开发人员都必须知道的
    查看>>
    springMVC学习(二)
    查看>>
    Pdfkit页眉和页脚
    查看>>
    PDF中的Pandoc语法突出显示不起作用
    查看>>
    pdf从结构新建书签_在PDF文件中怎样创建书签
    查看>>
    pdf做成翻页电子书_第一弹:常见BOOX电子书阅读器问题解答,这些技能你都会吗?...
    查看>>
    PDF工具箱-分割提取合并
    查看>>
    pdf打印骑缝章
    查看>>
    PDF文字识/编辑?这个工具真的很强大!
    查看>>
    pdf文档出现乱码如何修改
    查看>>
    pdf根据模板导出
    查看>>
    PDF调出本来存在的书签面板
    查看>>
    pdf转图片
    查看>>