flask项目结构心得

flask 项目没有标准的项目结构,合理组织,确保能跑,可配置,可拓展、模型可被发现就行。

一般可以分为两种

  • 按模型(业务)划分

  • 按功能划分,就是api、models、config、db、service等

按模型(业务)划分

project /
  |-- user /
  |    |-- __init__.py   # 主路由及自路由注册
  |    |-- apis.py       # 用户相关接口
  |    |-- models.py
  |-- testcase /
  |    |-- __init__.py   # 暴露内部的模型
  |    |-- apis.py      # 模型基础类
  |    |-- models.py       # 用户相关模型
  |-- config.py  # 数据库、插件等配置
  |-- app.py      # 应用创建及启动

按功能划分

project /
  |-- apis /
  |    |-- __init__.py   # 主路由及自路由注册
  |    |-- base.py       # 接口基础配置
  |    |-- user.py       # 用户相关接口
  |    |-- testcase.py
  |-- models /
  |    |-- __init__.py   # 暴露内部的模型
  |    |-- base.py      # 模型基础类
  |    |-- user.py       # 用户相关模型
  |    |-- testcase.py
  |-- config.py  # 数据库、插件等配置
  |-- app.py      # 应用创建及启动

在实际开发过程中,web项目可分为

  • 前后端分离 会有一个路由 routes 暴露出来 ,也可能叫 api
  • 前后端不分离,一般会使用模板引擎,所以会有 templatesstatic 这两个目录。

蓝图(Blueprint)介绍

flask 中,路由有一个嵌套功能,用来管理路由与视图函数关系。

  • Blueprint('api', __name__, url_prefix='/api') 每个蓝图里面包含 路由 、 视图函数、模板文件、静态文件等。可以按业务划分蓝图,也可以按功能划分蓝图。
  • 蓝图还能嵌套蓝图 。

其实就是类比于 express 中的路由前缀区分模块。只是更灵活,可以多层嵌套

from flask import Flask, Blueprint , url_for , redirect
app = Flask(__name__)

api_bp = Blueprint('api', __name__, url_prefix='/api')        # 接口根路由(蓝图)
user_bp = Blueprint('user', __name__, url_prefix='/user')   # 用户接口路由(蓝图)

@user_bp.route('/list')
def user_list():
    '''
    最终接口地址为 /api/user/list
    :return: 用户列表
    '''
    return "用户列表"

@app.route("/")
def main():
    user_list_url = url_for('api.user.user_list')
    return redirect(user_list_url)

# 注册用户接口路由(蓝图)到api
api_bp.register_blueprint(user_bp)
# 注册主接口路由(蓝图)到app
app.register_blueprint(api_bp)

if __name__ == "__main__":
    app.run(
        host="0.0.0.0",
        port=5611,
        debug=True
    )

相关推荐

  1. flask项目结构心得

    2024-06-06 07:24:01       24 阅读
  2. Flask项目结构搭建】

    2024-06-06 07:24:01       34 阅读
  3. Python Flask 打包成exe 心得体会

    2024-06-06 07:24:01       41 阅读
  4. vue项目心得(复盘)

    2024-06-06 07:24:01       55 阅读
  5. 新建一个flask项目

    2024-06-06 07:24:01       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 07:24:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 07:24:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 07:24:01       82 阅读
  4. Python语言-面向对象

    2024-06-06 07:24:01       91 阅读

热门阅读

  1. #职场发展#其他

    2024-06-06 07:24:01       27 阅读
  2. git命令

    2024-06-06 07:24:01       34 阅读
  3. 分布式搜索引擎ElasticSearch学习笔记

    2024-06-06 07:24:01       22 阅读
  4. 数据流图要点和难点实际应用

    2024-06-06 07:24:01       26 阅读
  5. Python函数式编程

    2024-06-06 07:24:01       29 阅读
  6. cv2 视频UDP传输

    2024-06-06 07:24:01       28 阅读
  7. Python命令行参数处理:详解argparse模块

    2024-06-06 07:24:01       30 阅读
  8. Docker的安装和使用

    2024-06-06 07:24:01       26 阅读
  9. Vue Router 使用教程

    2024-06-06 07:24:01       32 阅读
  10. frida timed out

    2024-06-06 07:24:01       34 阅读