Flask项目目录怎么分_MVC架构在Flask应用中的常见目录树

Flask无内置MVC,推荐最小可行结构:app.pyconfig.pyextensions.py、models/、services/、api/(蓝图)、requirements.txt;避免伪MVC目录拆分,业务逻辑下沉至services/,API按版本或调用方隔离而非模型划分。Flask 里没有内置 MVC,别硬套目录名Flask 本身不规定结构,app.py 放一个文件里也能跑。所谓 "MVC 目录" 是人按习惯组织的,不是框架强制的。硬照 Django 或 Spring 的 models/、views/、controllers/ 拆,反而容易让路由和业务逻辑脱节。常见错误现象:ImportError: cannot import name 'User' from 'models.user' ------ 实际是循环导入,因为 views.py 导了 models,而 models.py 又导了 db(它在 app.py 里初始化),但 app.py 又导入了 views。把 db、ma(Marshmallow)、login_manager 等扩展实例单独提成 extensions.py,避免初始化顺序混乱models/ 下每个文件只定义一类模型(如 user.pypost.py),统一由 models/init.py 导出,外部只从 models 导别建 controllers/ 文件夹------Flask 没 controller 层;路由函数(@app.route)+ 蓝图(Blueprint)就是入口,业务逻辑应下沉到 services/ 或 utils/推荐的最小可行目录结构(含蓝图为前提)真实项目一旦超过 3 个端点,就该用蓝图。以下结构经多个中等规模 Flask 项目验证,部署、测试、IDE 跳转都顺:myflaskapp/├── app.py # 创建 app、注册蓝图、配置加载├── config.py # 配置类(DevelopmentConfig, ProductionConfig)├── extensions.py # 所有扩展实例:db, ma, migrate, jwt 等├── models/│ ├── init.py # from .user import User; from .post import Post│ ├── user.py # class User(db.Model): ...│ └── post.py├── services/ # 关键!业务逻辑写这里,非 CRUD 封装│ ├── user_service.py # create_user(), send_welcome_email()│ └── auth_service.py├── api/ # 蓝图目录(按功能域分,非按 MVC 层分)│ ├── init.py│ ├── users.py # bp = Blueprint('users', name); @bp.route('/users')│ └── auth.py└── requirements.txtapi/users.py 里只做参数校验、调 services.user_service.create_user()、返回响应,不碰 db.sessionservices/ 不依赖 Flask 上下文(如 request、current_app),方便单元测试如果用 flask-sqlalchemy,models/ 中的 db 必须从 extensions.py 导入,不能自己 SQLAlchemy()什么时候该拆 api/ 为多个蓝图?不是按"用户管理""订单管理"这种后台思维拆,而是按「API 版本」或「调用方隔离」来拆。比如内部系统调用和对外 OpenAPI 需要不同鉴权、限流、日志粒度。 Ideogram Ideogram是一个全新的文本转图像AI绘画生成平台,擅长于生成带有文本的图像,如LOGO上的字母、数字等。

相关推荐
BaoshengTT13 小时前
2026年双流区汽车贴膜种类及挑选要点保圣威固7V不凡门店
python
zhiSiBuYu051713 小时前
Flask 请求与响应新手实战指南
后端·python·flask
sevenll0713 小时前
SqlKit - 覆盖 50+ 数据库的 AI 智能体 SQL 桌面客户端
数据库·人工智能·sql·智能体
宸津-代码粉碎机14 小时前
告别手动Jar部署!生产级无损热部署方案,彻底解决OOM与更新失效问题
java·大数据·开发语言·人工智能·python
米码收割机14 小时前
【移动】线上购物移动端网站(源码+文档)【独一无二】
java·开发语言·前端·python·django
未知违规用户14 小时前
大模型项目: 学习FastAPI 服务器开发
服务器·人工智能·python·学习·fastapi
想会飞的蒲公英14 小时前
PyTorch reshape、view、transpose、广播到底怎么选?
人工智能·pytorch·python
卷无止境14 小时前
Python装饰器:一层糖衣包裹的函数魔法
后端·python
xlrqx14 小时前
长治家电清洗培训基地如何挑选及行业基本培训标准科普
大数据·python
无敌秋14 小时前
python/c++/java上云
java·c++·python