【Flask框架】10、Flask项目拆分规范

一、项目拆分

在实际开发中,为了更好的管理和维护大型的Flask项目。通常会采用模块化的方式来组织代码。这种方式通常会将主应用与各个模块(Blueprint)分离。并且将静态资源和模版文件分开管理。以下是一个典型的项目结构示例:

plaintext 复制代码
my_flask_app/
├── app/
│   ├── __init__.py
│   ├── auth/
│   │   ├── __init__.py
│   │   ├── views.py
│   │   ├── forms.py
│   │   ├── templates/
│   │   │   └── auth/
│   │   │       └── login.html
│   │   └── static/
│   │       └── css/
│   │           └── style.css
│   ├── blog/
│   │   ├── __init__.py
│   │   ├── views.py
│   │   ├── models.py
│   │   ├── templates/
│   │   │   └── blog/
│   │   │       └── post.html
│   │   └── static/
│   │       └── js/
│   │           └── script.js
│   ├── admin/
│   │   ├── __init__.py
│   │   ├── views.py
│   │   ├── templates/
│   │   │   └── admin/
│   │   │       └── dashboard.html
│   │   └── static/
│   │       └── images/
│   │           └── logo.png
│   └── main/
│       ├── __init__.py
│       ├── views.py
│       ├── templates/
│       │   └── main/
│       │       └── index.html
│       └── static/
│           └── favicon.ico
├── config.py
├── run.py
└── requirements.txt

二、项目结构说明

  1. app 目录

    • 这是所有功能模块(Blueprints)的根目录。
    • 每个功能模块都有自己的子目录,如 auth, blog, admin, main 等。
    • 每个子目录内包含了该功能模块的视图函数 (views.py)、模型 (models.py)、表单 (forms.py) 等。
    • 每个功能模块都有自己的 statictemplates 目录,用于存放静态文件和模板文件。
  2. 功能模块 (auth, blog, admin, main)

    • 每个功能模块都是一个独立的 Blueprint。
    • __init__.py 文件用于初始化 Blueprint,并注册路由和其他组件。
    • views.py 包含该功能模块的所有视图函数。
    • models.py 包含数据库模型定义。
    • forms.py 包含表单定义。
    • static 目录存放该功能模块所需的静态文件。
    • templates 目录存放该功能模块所需的模板文件。
  3. config.py

    • 包含应用的配置信息,如数据库连接字符串、密钥等。
  4. run.py

    • 启动 Flask 应用的入口文件,通常在这里初始化应用并注册所有 Blueprint。
  5. requirements.txt

    • 列出项目依赖的第三方库及其版本。

三、示例代码

app/__init__.py

python 复制代码
from flask import Flask
from .main import main as main_bp
from .auth import auth as auth_bp
from .blog import blog as blog_bp
from .admin import admin as admin_bp

def create_app():
    app = Flask(__name__)
    app.config.from_object('config')
    
    # 注册蓝图
    app.register_blueprint(main_bp)
    app.register_blueprint(auth_bp)
    app.register_blueprint(blog_bp)
    app.register_blueprint(admin_bp)
    
    return app

run.py

python 复制代码
from app import create_app

app = create_app()

if __name__ == '__main__':
    app.run(debug=True)

​ 这种项目结构有助于将不同功能模块分离,使得代码更加模块化、可维护和可扩展。每个功能模块都有自己的静态资源和模板文件,这样可以更好地组织和管理文件。此外,这种结构也方便了团队协作,不同的开发人员可以专注于不同的功能模块。

相关推荐
芝麻团坚果9 分钟前
对subprocess启动的子进程使用VSCode python debugger
linux·ide·python·subprocess·vscode debugger
机器之心17 分钟前
全球十亿级轨迹点驱动,首个轨迹基础大模型来了
人工智能·后端
EterNity_TiMe_18 分钟前
【论文复现】神经网络的公式推导与代码实现
人工智能·python·深度学习·神经网络·数据分析·特征分析
Stara051126 分钟前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
hence..1 小时前
Vscode写markdown快速插入python代码
ide·vscode·python
潜洋1 小时前
Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序
java·spring boot·后端
DanielYQ2 小时前
LCR 001 两数相除
开发语言·python·算法
St_Ludwig2 小时前
C语言 蓝桥杯某例题解决方案(查找完数)
c语言·c++·后端·算法·游戏·蓝桥杯
vener_2 小时前
LuckySheet协同编辑后端示例(Django+Channel,Websocket通信)
javascript·后端·python·websocket·django·luckysheet
封步宇AIGC2 小时前
量化交易系统开发-实时行情自动化交易-4.2.3.指数移动平均线实现
人工智能·python·机器学习·数据挖掘