Django 是一个非常流行的用 python 编写的 web 框架, 在使用 Django 之前, 我们需要了解一些基本的概念, 这样可以在使用 Django 的时候对其有一个更加深入的把握. 本文主要介绍 Django 中两个非常基础但又是很多初学者不太明白的概念: project 和 App.
Project
其实在计算机领域, 要真正了解一个东西, 莫过于亲自去阅读它的源代码; 同理, 对于 Django 中的 project 和 App, 我们也可以采用类似的方法. 我们可以通过命令:
django-admin.py startproject mysite
来创建一个新的 project, 之后我们可以在当前目录下看到如下目录结构:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
其中 manage.py 是在开发 Web 项目时经常用到的工具, 如: python manage.py runserver localhost:8000 ; python manage.py syndb 等等, 而在内部的 mysite 目录下放着四个 py 文件, 其中__init__.py 用于说明内部的 mysite 目录是一个 python 模块, 打开 settings.py 文件, 我们可以看到一些基本的配置信息, 包括数据库配置, 时区, 安装的 App, 中间件, 日志配置, 以及一些基本的目录配置等, 其本质上相当于一个基本的 Web 工程的全局配置. urls.py 文件中包含一个 urlpatterns 变量, 其实它就是一个 URL Dispacher(URL 分派器), 用于在 URL 和实际的 view 之间建立一个映射.
App
在创建完 project 之后, 我们可以通过命令: python manage.py startapp polls 创建一个名叫 polls 的 App, 然后整个目录结构变成如下所示:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
polls/
__init__.py
models.py
views.py
test.py
很显然, 上述红色部分是多出来的, 即运行上述命令后做的一些事情, 其中 __init__.py 用于说明 polls 目录是一个 python 模块, models.py 中包含一系列的模型类, 每个模型类对应数据库中的一个表, 这之间的映射由 Django 来做, 有关数据库的配置在 mysite/settings.py 中. 而 views.py 中包含的是对各个请求的处理逻辑, 前面说的 URL Dispacher 即将 URL 请求映射到这个文件中的函数或类方法上. 同时可以在 polls 目录下创建 template 目录, 然后将前台的 html,CSS,script 等内容放置在这个目录下, 并在 setttings.py 文件添加相应的配置信息. 所以, 我们其实可以看到 App 相当于一个相对独立的功能模块, 其遵循的设计理念是 MVT(类似 MVC); 在一个大型的 Project 中, 可以包含很多 App, 而且每个 App 可以在不同的 Project 中复用, 这也符合 Django 的编程理念, 即: 不要做重复的事情.
综上所述, project 和 App 的区别已经很明显了, project 包含一些全局配置, 这些配置构成一个全局的运行平台, 各个 App 都运行在这个全局的运行平台上, 而 App 代表的是一个相对独立的功能模块, 所以程序的逻辑都在 App 中.
来源: https://yq.aliyun.com/articles/689429