1.这种布局的优点项目中的每个应用都是相对独立的,方便以后复用。这样的布局会迫使你在开发过程中考虑每个应用程序的可重用性。开发、测试、生产等不同环境都有自己独立的配置文件,方便配置项的共享和定制。不同的环境有自己独立的pip需求文件。每个应用程序都有自己的模板和静态目录,您可以通过项目级模板和静态目录中的文件覆盖每个应用程序中的相应内容。模型、视图、管理器等的测试都保存在单独的文件中,易于阅读和理解。2、Django生成的默认布局假设项目名为foo,使用pythondjango-admin.pystartprojectfoo命令生成的默认布局为:foo/manage.pyfoo/__init__.pysettings.pyurls.pywsgi.py3、推荐项目布局假设我们的项目名为myproject,其中有两个应用博客和用户,推荐的项目布局可以是:myproject/manage.pymyproject/__init__.pyurls.pywsgi.pysettings/__init__。pybase.pydev.pyprod.pyblog/__init__.pymodels.pymanagers.pyviews.pyurls.pytemplates/blog/base.htmllist.htmldetail.htmlstatic/css/js/…tests/__init__.pytest_models.pytest_managers.pytest_views.pyusers/__init__.pymodels.pyviews.pyurls.pytemplates/users/base.htmllist.htmldetail.htmlstatic/css/js/…tests/__init__.pytest_models.pytest_views.pystatic/css/js/…templates/base.htmlindex.htmlrequirements/base.txtdev.txttest.txtprod.txt1.各个应用的目录位置最顶层的myproject目录包含manage.py文件,所以是项目的根目录myproject/myproject/是项目的内容目录,项目的根URL配置文件,WSGI配置文件存放在这里。myproject/blog/和myproject/users/是项目的两个应用所在的目录。将blog和users的目录与myproject/myproject/并行放置而不是将它们放置在目录myproject/myproject/中的优点是:当您稍后要在应用程序中导入模块时,例如在博客应用程序中导入模型时,可以使用importblog.models代替importmyproject.blog.models,这样也方便应用独立复用。2、为每个环境设置单独的配置信息为项目的每个环境创建独立的配置文件,如本地开发dev、内测阶段、自动化流程环境jenkins、生产环境prod。在myproject/myproject目录下新建一个settings目录,在里面新建一个空的__init__.py。将myproject/myproject/settings.py文件移动到myproject/myproject/settings/目录下,重命名为base.py。此文件中的配置信息由所有其他环境中的配置文件共享。在myproject/myproject/settings/目录下创建4个文件dev.py、stage.py、jenkins.py和prod.py,每个文件包含如下一行代码:frombaseimport*这样,这些环境配置文件可以读取默认的配置项,然后可以在各自的配置文件中设置自定义的配置值。比如在本地开发环境,可以在dev.py中加上DEBUG=True**,在生产环境**prod.py**,可以设置DEBUG=False`。指定使用哪个配置文件:可以通过操作系统的环境变量指定,如:exportDJANGO_SETTINGS_MODELS="myproject.settings.prod"也可以通过命令行参数指定,如:./manage。pymigrate--settings=myproject.settings.prod或gunicorn-w4-b127.0.0.1:8001--settings=myproject.settings.prod3。修改INSTALLED_APPS默认的INSTALLED_APPS将是:INSTALLED_APPS=(...)你可以将元组()更改为列表[]:INSTALLED_APPS=[...]此外,我们可以将第三方(内置)应用程序分开来自我们自己的应用程序的INSTALLED_APPS,例如:users','blog',]INSTALLED_APPS=PREREQ_APPS+PROJECT_APPS这样分离之后,我们就只能测试和代码覆盖了。上面对INSTALLED_APPS的修改也可以对TEMPLATE_DIRS和MIDDLEMARE_CLASSES进行。4.调整pip需求项目一般都有一个requirements.txt文件,可以指定项目的依赖包。根据这个文件,可以使用如下命令自动安装依赖包:requirements.txt文件中的pipinstall-rrequirements.txt可以使用-rfilename来包含另一个文件的内容,这个功能类似于C语言中的#include
