-
<李>项目中的每个应用都相对独立,方便以后拿出来重用。李>
<李>这样的布局会促使你在开发过程中考虑每个应用的重用性。李>
<李>开发,测试,生产等不同的环境都有各自独立的配置文件,方便配置项的共享和定制。李>
<李>不同的环境都有各自独立的pip需求文件。李>
<李>每个应用都有各自的模板和静态目录,你可以通过项目级的模板和静态目录中的文件对各应用中的相应内容进行覆盖。李>
<李>对模型、视图、经理等的测试都各自保存在独立的文件中,易于阅读和理解。
李>
假设项目名为foo,使用python django-admin。py startproject foo命令产生的默认布局会是:
foo/jobs foo/__init__ . py settings.py urls . py wsgi.py >之前
假设我们的项目名为myproject,其中有两个应用博客和用户,推荐的项目布局可以为:
myproject的/jobs myproject的/__init__ . py urls . py wsgi.py 设置/__init__ . py base.py dev.py prod.py 博客/__init__ . py models.py managers.py views.py urls . py 模板/博客/base.html list.html detail.html 静态/css/js/? 测试/__init__ . py test_models.py test_managers.py test_views.py 用户/__init__ . py models.py views.py urls . py 模板/用户/base.html list.html detail.html 静态/css/js/? 测试/__init__ . py test_models.py test_views.py 静态/css/js/? 模板/base.html index . html 要求/base.txt dev.txt 用法 prod.txt >之前<强> 1。每个应用的目录位置
强>最顶层的myproject目录包含有管理。py文件,因此是项目的根目录。myproject/myproject是项目的内容目录,项目的根URL配置文件,WSGI配置文件都存放在这里面。
myproject/博客/和myproject/用户/是项目的两个应用所在的目录,将博客,用户这两个应用的目录与myproject/myproject/平行放置,而不放置在myproject/myproject目录内的好处是:之后要进口应用中的模块时,比如导入博客应用中的模型时,可以用进口的博客。模型,而不需要用进口myproject.blog.models,这样也方便之后能将应用独立出来重用。
<强> 2。为每个环境设置各自的配置信息强>
针对项目的各个环境,如本地开发dev,内部测试阶段,自动化流程环境詹金斯及生产环境刺激,分别创建独立的配置文件。
<李>在myproject/myproject目录下新建一个设置目录并在里面创建一个空的__init__ . py。李> <李>将myproject/myproject的设置。py文件搬到myproject/myproject/设置/目录下,并改名为基础。py,这个文件里面的配置信息被所有其它环境的配置文件所共享。
李> <李>在myproject/myproject/设置/目录下分别创建dev.py, stage.py,詹金斯。py和prod.py 4个文件,每个文件中包含如下的一行代码:
李>从基本进口*这样,这些环境配置文件就能读取默认的配置项了,之后就能在各自的配置文件中设置定制的配置值了。比如本地开发环境,可以在dev.py中添加DEBUG=True * *,而生产环境* *刺激。py * *,可以设置DEBUG=False”。
<强>指定使用哪个配置文件:强>
可以通过操作系统的环境变量指定,比如:
出口DJANGO_SETTINGS_MODELS=" myproject.settings.prod " >之前也可以通过命令行参数指定,比如:
/管理。py迁移——设置=myproject.settings.prod或者
gunicorn 4 - b - w=myproject.settings.prod 127.0.0.1:8001——设置 >之前<强> 3。修改INSTALLED_APPS 强>
默认的INSTALLED_APPS会是:
INSTALLED_APPS=( … ) >之前可以将元组()改为列表[]:
INSTALLED_APPS=[ … ] >之前进一步可以将INSTALLED_APPS中的第三方(内置)的应用与我们自己的应用分开,如:
Django项目布局方法(值得推荐)