Django 1.6 最佳实践: Django项目的布局结构和目录结构

在我们的博客中, 记录了我们在开发过程中所使用的技术和遇到的问题, 希望作为其他开发和设计者的一个学习交流平台.

Django 1.6 最佳实践: Django项目的布局结构和目录结构


不同的程序员对于项目布局都有着不同的见解, 在本文中, 我们会介绍我们使用的布局结构. 这种结构应该也是使用最为广泛的结构了.

1. Django默认的项目部局

当我们使用django-admin.py startproject mysite 和 django-admin.py startapp my_app 建立新的Django项目时, Django默认的结构如下:

    mysite/
        manage.py
        my_app/
            __init__.py
            admin.py
            models.py
            tests.py
            views.py
        mysite/
            __init__.py
            settings.py
            urls.py
            wsgi.py

在Django默认的项目部局中, 存在着一些问题, 特别是在部署到真正的服务器时, 这些问题会越发的明显, 下面我们会一一阐述这些问题:

2. 最终的项目布局

我们使用三层结构来布局我们的Django项目: 最外层是git仓库, 中间层则是django-admin.py默认的生成的项目层, 最里层则是设置层:

    repository_root/
        django_project_root/
            configuration_root/

a. 最外层

最外层是整个项目的容器, 除了包括django程序外, 还包括README.rst, docs/, .gitignore, requirements.txt等用于部署到服务器的 必须文件或目录. 这样这些文件便可以通过git管理, 方便开发和维护的使用.

README.rst文件和docs目录是用于介绍本项目的文档, 方便程序员了解项目的基本功能等, 我们会在今后详细介绍这一文档.

.gitignore文件是git版本控制系统的设置文件之一, 用于设置本仓库中需要忽略的文件或目录, 既不需要保存版本记录文件或目录.

requirements.txt则记录着本项目中用到的Python模块和版本的列表, 通常是通过pip freeze获取的. 我们会在今后详细介绍这一文档.

b. 中间层

中间层则是由django-admin.py生成, 也就是django默认的项目布局, 中间层生成时, 也包括了最里层: 设置层. 这一层中包括了media目录, static目录, templates目录, 和Django app.

c. 最里层

最里层设置层中, 包含了django-admin.py生成的设置文件, 包括settings.py, urls.py等文件.

3. Virtualenv

我们建议将所有virtualenv文件放在统一的目录下, 如果你使用virtualenvwrapper的话, 它位于~/.virtualenvs/中. 并且, 这些文件没有必要保存到git版本管理中, 因为我们已经保存了requirements.txt文件.


原文链接: http://weiguda.com/blog/5/