关于Python Django框架更合理的项目结构讨论
在 API 接口开发过程中,我使用了 Django Rest Framework. 使用 Django 原始的项目结构进行开发时感觉不够流畅,不知道大家有没有同感
为此, 我自己设计了一个比较舒适的结构进行 API 接口的开发. 我参考了许多 Django 项目以及其它语言类似的框架的项目结构.
大家可以看看哪里可以一起优化的.
目录结构(博客项目举例)
{app.name}
api/
__init__.py
urls.py
tasks.py
models.py
migrations/
__init__.py
docs/
users.md
blogs.md
catagries.md
comments.md
tags.md
tests/
__init__.py
test_users.py
test_blogs.py
test_comments.py
test_tags.py
test_catagries.py
resources/
__init__.py
users.py
blogs.py
catagries.py
tags.py
comments.py
config/
__init.py
common.py
dev.py
prod.py
celery.py
manage.py
wsgi.py
fabfile.py
.gitignore
mkdocs.yml
requirements.txt
- 其中 resources 文件夹下每个文件代表一种资源,如 users.py 代表与 user 有关的所有接口都在这儿.
- 一个 users.py 中同时包含 Serializer,ViewSet,Permission,而不是像之前那样全部分开到 permissions.py,serializers.py,views.py 中.
- 我个人主观感觉这样逻辑更清晰,写起来更舒适,.
不知道大家有什么开发?
关于Python Django框架更合理的项目结构讨论
你这个,,一个文件,即写了 view 又写了 Serializer,ViewSet,Permission 等,个人认为,晦涩难懂,代码文件太长,还是因人而意吧,弱弱的问一句,tests 你放哪儿?
在Django项目中,合理的结构能显著提升可维护性。核心原则是保持应用(app)的单一职责,将项目拆分为功能独立的模块。
一个典型的推荐结构如下:
myproject/
├── myproject/ # 项目配置目录
│ ├── __init__.py
│ ├── settings/
│ │ ├── __init__.py
│ │ ├── base.py # 基础配置
│ │ ├── local.py # 开发环境
│ │ └── production.py # 生产环境
│ ├── urls.py
│ └── wsgi.py
├── apps/ # 应用目录
│ ├── __init__.py
│ ├── users/ # 用户管理应用
│ └── products/ # 商品应用
├── static/ # 静态文件
├── media/ # 用户上传文件
├── templates/ # 全局模板
├── requirements/
│ ├── base.txt
│ ├── local.txt
│ └── production.txt
└── manage.py
关键点:
- 拆分settings:通过环境变量
DJANGO_SETTINGS_MODULE加载不同配置(如myproject.settings.local)。 - 集中管理应用:所有自定义应用放在
apps/目录下,需在settings.py中通过sys.path添加路径。 - 应用内部结构:每个应用应包含
models.py、views.py、urls.py等,复杂时可拆分为views/、models/包。
对于大型项目,可进一步按领域驱动设计划分更细的子域。总之,保持结构扁平清晰,避免过度设计。
建议:根据项目规模选择合适的结构,并在团队内保持一致。
test… 不合理bash<br> tests/<br> <a target="_blank" href="http://__init__.py" rel="nofollow noopener">__init__.py</a><br> <a target="_blank" href="http://test_users.py" rel="nofollow noopener">test_users.py</a><br> <a target="_blank" href="http://test_blogs.py" rel="nofollow noopener">test_blogs.py</a><br> <a target="_blank" href="http://test_comments.py" rel="nofollow noopener">test_comments.py</a><br> <a target="_blank" href="http://test_tags.py" rel="nofollow noopener">test_tags.py</a><br> <a target="_blank" href="http://test_catagries.py" rel="nofollow noopener">test_catagries.py</a><br>
既然都已经有了 tests 就不用再加 test_了吧,个人感觉
主要还是看对象。
我觉得少的只会是一些 import 或者 from
<two scoops of Django > 里面有专讲结构,看看感觉会对你有很大帮助
看过了,不太适合 API 接口开发的情况

