一、这种布局的优点
-
项目中的每个应用都相对独立,方便以后拿出来重用。
-
这样的布局会促使你在开发过程中考虑每个应用的重用性。
-
开发、测试、生产等不同的环境都有各自独立的配置文件,方便配置项的共享和定制。
-
不同的环境都有各自独立的 pip requirements 文件。
-
每个应用都有各自的 templates 和 static 目录,你可以通过项目级的 templates 和 static 目录中的文件对各应用中的相应内容进行覆盖。
-
对 models、views、managers 等的测试都各自保存在独立的文件中,易于阅读和理解。
二、Django 默认产生的布局
假设项目名为 foo, 使用 python django-admin.py startproject foo
命令产生的默认布局会是:
foo/
manage.py
foo/
__init__.py
settings.py
urls.py
wsgi.py
三、推荐的项目布局
假设我们的项目名为 myproject, 其中有两个应用 blog 和 users,推荐的项目布局可以为:
myproject/
manage.py
myproject/
__init__.py
urls.py
wsgi.py
settings/
__init__.py
base.py
dev.py
prod.py
blog/
__init__.py
models.py
managers.py
views.py
urls.py
templates/
blog/
base.html
list.html
detail.html
static/
css/
js/
…
tests/
__init__.py
test_models.py