【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)

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

相关推荐
Yan-英杰12 分钟前
百度搜索和文心智能体接入DeepSeek满血版——AI搜索的新纪元
图像处理·人工智能·python·深度学习·deepseek
weixin_307779131 小时前
Azure上基于OpenAI GPT-4模型验证行政区域数据的设计方案
数据仓库·python·云计算·aws
玩电脑的辣条哥2 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
m0_748256144 小时前
SpringBoot
java·spring boot·后端
多想和从前一样5 小时前
Django 创建表时 “__str__ ”方法的使用
后端·python·django
涛粒子6 小时前
Spring Bean 生命周期的执行流程
java·后端·spring
小喵要摸鱼6 小时前
【Pytorch 库】自定义数据集相关的类
pytorch·python
bdawn6 小时前
深度集成DeepSeek大模型:WebSocket流式聊天实现
python·websocket·openai·api·实时聊天·deepseek大模型·流式输出
Jackson@ML6 小时前
Python数据可视化简介
开发语言·python·数据可视化
mosquito_lover16 小时前
怎么把pyqt界面做的像web一样漂亮
前端·python·pyqt