1. 创建你的第一个项目
我们第一个 Django 项目是创建一个完成的 Blog 项目。 Django 提供了一个命令允许你创建一个初始化项目文件目录。在你自己的 shell 运行下面的命令。
django-admin startproject mysite
这回创建一个名称为 mysite
的Django 项目。
避免用内置Python或Django模块来命名项目,以避免冲突。
让我们看看生成的项目结构:

这些文件如下:
-
manage.py
: 这是一个在你的项目被用于交互的命令行程序,它是对 django-admin.py 工具的简单包装,你不用去写这个文件。 -
mysite/
: 这是你的项目目录,它包含下面的这些文件:-
__init__.py
: 一个空文件,告诉python
将mysite
目录作为 一个 Python 模块去对待。 -
asgi.py
: 这是把你的项目作为 ASGI 去运行的一些配置,异步 web 服务器和应用程序的 新兴 python 标准。 -
settings.py
: 包含你项目的设置和配置,并包含了初始默认设置。 -
urls.py
: 这是你路由模式所在的位置。这里定义的每个 URL 都映射到一个视图。 -
wsgi.py
: 这是把你的项目作为 WSGI 应用程序去运行的配置。
-
这个生成的项目有关的 setting.py
文件包含了如何去使用 SQLite3
数据库的基本配置,以及用一个名称为 INSTALLED_APPS
的列表,默认在你的项目中包含了常见的Django 应用程序。我们将在后面的 项目配置部分 介绍这些应用程序。
Django 应用程序包含了一个用于定于数据模型的 models.py
文件,每一个数据模型都映射了一个数据库表。在完整的项目中,你需要为在 INSTALLED_APPS
应用程序列表中的所有 数据模型 创建一个相关的表。Django 包含了一个用于管理这些的 数据迁移系统。
打开 shell 运行下面的命令:
cd mysite
python manage.py migrate
你可以看来类似下面的这些输出:

前面几行是 Django 应用程序的数据库迁移,通过数据库迁移,这些表在初始化应用程序的时候被创建在数据库中。你将在 创建和应用迁移部分学习更多有关 migrate
的管理命令。
2. 在开发服务器中运行
Django 附带了一个轻量级的 web 服务器去快速运行你的代码,不需要花费时间配置生产服务器。在你运行DJango 的开发服务器的时候,它始终会检查你修改后的代码。然后它可能不会主要到有些部分,例如在你的项目中添加了一个新的文件,因此在这些情况下需要手动重启你的服务器。
在你的项目更目录中输入 下面的 代码,去启动开发服务器:
python manage.py runserver
你应该看到类似于下面的这些:

现在 在你的 浏览器中打开 http://127.0.0.1:8000/
, 你应该看到一个页面,
说明项目已成功运行,如下面屏幕快照所示(Django开发服务器默认页面):

上面的屏幕快照表示 Django 正在运行,如果你看一下你的控制台,可以看到通过你的浏览器执行了一个 GET 请求。
[15/Jul/2020 13:49:46] "GET / HTTP/1.1" 200 16351
开发服务器的控制台会记录每一个 HTTP 请求。运行开发服务器时发生的任何错误也将出现在控制台中。
你可以让 Django 开发服务器运行在自定义的主机和端口上,或者告诉Django加载特定的 settings 文件,如下:
python manage.py runserver 127.0.0.1:8001 --settings=mysite.settings
(译者注: 原文是python manage. py runserver 127. 0. 0. 1: 8001 \--settings=mysite. settings
, 但是有 '\' 这个符号可能会报错,所以我去掉了。)
当你需要为多个环境处理不一样的配置时,你可以为每一个环境创建一个不同的配置文件。
记住这个内置的Web服务器仅仅是为了在开发中使用的,不适合在生产环境中使用。在生产环境中部署 Django ,你应该把它作为一个 WSGI 应用程序在 Web 服务器中运行,例如 Apache
, Gunicorn
, 或者是作为 uWSGI, 再或者是 作为 ASGI 应用程序运行再 Uvicorn
, Daphne
. 你可以在这个链接中发现更多有关于如何把 Django 部署到不同的web 服务器中的信息。
第 14 章 上线 ,解释如何为你的 Django 项目设置一个生产环境。
1.2.2 项目设置
让我们打开 setting.py
文件,并且看看有关于项目的配置。Django 在这个文件里面包含了几个设置,但是这是所有可用配置的一部分,你可以在这个链接查看所有的配置以及这些配置的默认值。
下面这些设置的值如下所示:
-
DEBUG
是一个Boolean
类型,来控制项目 debug 模式的打开和关闭。如何它的值为True
, Django 将显示在你的应用程序中没有捕捉到的详细错误信息,当你 移动到生产环境中的是时候,记得一定要把它设置为Flase
。 永远不要在你的生产环境中把DEBUG
打开,不然你会暴露很多与项目有关的敏感数据。 -
ALLOWED_HOSTS
在 debug模式打开的情况下或者是正在运行测试的时候,不会起作用。一旦你移动到 生产环境的时候,把DEBUG
设置为False
的时候,你就需要把 将要访问你的 Django 站点的 域/主机 设置在这个里面。 -
INSTALLED_APPS
是一个对所有将要编辑的项目的设置。这个设置告诉Django将这些应用程序在站点中激活。Django 中包含下面这些默认应用程序:-
django.contrib.admin
: 一个管理员站点 -
django.contrib.auth
: 一个 验证框架。 -
django.contrib.contentypes
: 一个处理上下文类型的框架。 -
django.contrib.sessions
: 一个 session 框架。 -
django.contrib.messages
: 一个 消息框架。 -
django.contrib.staticfiles
: 一个管理静态文件的框架。
-
-
MIDEELEWARE
是一个要被执行的中间件列表。 -
ROOT_URLCONF
表明定义应用程序的根URL模式的 Python 模块。 -
DATABASES
是一个字典,它包含所有在项目中使用的数据库的配置。必须始终有一个默认的数据库。这里默认的是使用SQLite3
数据库的配置。 -
LANGUAGE_CODE
在 Django 站点中定义默认的语言编码。 -
USE_TZ
告诉 Django 激活或者禁止时区支持。Django 支持 地区时区监测。你使用startproject
创建一个新的项目的时候,这个设置被设置为True
。
如果你现在对这里见到的东西不是特别理解,请不要担心,你将在后面的章节中学习到不同Django配置。
3. 项目和应用程序
在这本书中,你将一遍又一遍遇到 项目
和 应用程序
这两个概念。在Django中,一个 项目
被认为是一个带有一些设置的 django installation(译者注:不知道咋翻译这个概念,索性不翻译)。一个 应用程序
是一组 模型,视图,模板,URLs。应用程序与框架交互可以提供一些特殊的功能,并可在各种项目中重用。你可以把你的网站想象成一个项目,里面包含了各种各样的应用程序,例如 blog, wiki, 或者 论坛, 这些应用程序也还可以被用在其他项目中。
下面的图展示了 Django 项目的结构:

4. 创建一个应用程序
现在让我们来创建你的第一个Django 应用程序,你将重头开始创建一个blog 应用程序。在这个应用的根目录下,运行下面的命令:
python manage.py startapp blog
这将会创建一个基础的应用程序框架,像下面一样:

文件说明如下所示:
-
admin.py
: 在 Django 的管理员站点中注册模型,使用这个站点是可选的。 -
apps.py
: 这里包含一些对于blog
应用程序的主要配置。 -
migrations
: 关于应用程序数据迁移的文件会放在这个目录中,Django 会去追踪你模型的改变并且同步到相应的数据库。 -
models.py
: 包含应用程序中的数据模型,所有的 Django 应用程序都需要有这个models.py
文件,但是这个文件可以保留为空。 -
tests.py
: 可以把你这个应用程序的测试放在这里。 -
views.py
: 把这个应用程序的逻辑放在这里,所有的视图都接受一个 HTTP 请求,然后处理它,最后返回一个 response 响应。
网友评论