本教程内容已过时,更新版教程请访问: Django 博客开发入门教程。
这是 Django 博客教程的第 2 篇,在阅读此篇教程以前,请确保你已阅读 Django 博客教程的第 1 篇:
1. Django 博客教程:前言
本教程使用的开发环境
本教程写作时开发环境的系统平台为 Windows 10(64 位),Python 版本为 3.5.2 (64 位),django 版本为 1.10.6。建议尽可能地与教程的开发环境保持一致(尤其是 Python 与 django 版本)。建议的 Python 版本为 3.4 或以上,django 版本号必须为 1.10.x。
注:本教程将尽量保证兼容 Python 2,但不会在 Python 2 环境下做测试。如果你因为某种原因必须使用 Python 2,你可以在你的 Python 2 环境下尝试运行教程里的代码,应该能够顺利运行,因为 django 本身支持 Python 2 和 Python 3,不过 django 官方建议 Python 2 的版本号最好是 2.7.x。如果你在 Python 2 下遇到问题,欢迎到社区的 [django 博客教程][1] 的分类下发帖报告这个问题。
[1]: http://pythonzh.cn/
安装 Python
Windown 下安装 Python 非常简单,去[这里][2]找到 Python 3.5 的下载地址,根据你的系统选择 32 位或者 64 位的安装包,下载好后双击安装即可。如果遇到问题,建议尝试百度相关教程。如果始终无法解决,可以到[社区][1]发帖求助。
[2]: https://www.python.org/downloads/release/python-352/
安装完后检测一下 Python 是否可以正常运行。在命令行输入 python -v
,如果成功输出了 Python 的版本号,说明已经安装成功了。如果提示命令未找到,而你又确定已经安装了 Python,多半是因为没有把 Python 添加到环境变量。
C:\WINDOWS\system32>python -V
Python 3.5.2
Virtualenv
强烈推荐在 virtualenv(虚拟环境)下进行 django 的开发。什么是 virtualenv?virtualenv 是一个 Python 工具,使用它可以创建一个独立的 Python 环境。举个例子,假设你已经在系统中安装了 Python,并且在阅读此教程前你还进行过一些 django 的学习,因此你通过 pip install django
安装了 django,但不幸的是那时候安装的 django 还是 1.8 版本。现在我们教程使用的是最新版的 django 1.10.6,你肯定不愿意删除掉旧版的 django 1.8,因为那可能导致你以前的那个项目无法运行了。我既想让原本项目在 django 1.8 环境下运行,又想再安装 django 1.10.6 开启一个新项目,怎么办呢?使用 virtualenv 就能解决这个问题。它帮我们从系统的 Python 中克隆一个全新的环境出来,这个环境独立于原来的 Python 环境,我们可以在这个新的运行环境下安装 django 1.10.6,并且在这个新环境下运行我们的新项目。virtualenv 的使用非常简单,下面看看如何使用。
首先安装它,打开命令行工具,输入:
C:\WINDOWS\system32>pip install virtualenv
安装成功后创建虚拟环境,指定一个你喜欢的目录,virtualenv 会把这个新的虚拟环境装到你指定目录下,例如我把它装到 C:\Users\yangxg\Envs 目录下,我把虚拟环境命名为 blogproject_env(也可以取任何你喜欢的名字),在命令栏运行如下命令:
C:\WINDOWS\system32>virtualenv C:\Users\yangxg\Envs\blogproject_env
新环境已经创建好了,我们需要进入这个环境,运行 blogproject_env\Scripts 目录下的 activate 程序激活它:
C:\WINDOWS\system32>C:\Users\yangxg\Envs\blogproject_env\Scripts\activate
(blogproject_env) C:\WINDOWS\system32>
此时看到命令提示符前面多了一个 (blogproject_env)
,说明我们已经成功进入了虚拟环境,接下来就可以开始安装 django 了。
安装 django
django 的官方文档对如何[安装 django][3] 给出了详细且明确的指导,但我们目前用不上这些,只需简单地 pip install django==1.10.6
就可以解决问题了。
[3]: https://docs.djangoproject.com/en/1.10/intro/install/#install-django
(blogproject_env) C:\WINDOWS\system32>pip install django==1.10.6
我们用 django==1.10.6
来安装指定的 django 版本以保证和教程的版本一致,避免不必要的麻烦。如果直接 pip install django
的话有可能安装最新的 django 版本,而不是 1.10.6。
注意命名提示符前的 (blogproject_env) 确保你始终处在虚拟环境中,如果你不小心退出了虚拟环境,先按上面的步骤重新进入再安装 django。
顺便测试一下安装是否成功,现在命令行输入 python
以打开 Python 自带的命令栏,然后输入 import django
,如果没有报错就说明 django 安装成功,最后通过 print(django.get_version())
打印出 django 的版本号,确保安装了正确版本的 django :
(blogproject_env) C:\WINDOWS\system32>python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print(django.get_version())
1.10.6
>>>
建立 django 工程
万事已经具备了,让我们来建立我们的 django 工程。 django 工程(project)是我们项目代码的容器。例如我们博客项目中所有的代码(包括 django 为我们自动生成的以及我们自己写的)都包含在这个工程里,说白了就是用一个文件夹包起来的一系列 Python 代码文件和 django 配置文件。但我们不必去亲自动手新建这个文件夹和代码文件,django 的命令帮我们做了这些事情。例如我把博客项目工程的代码放在 C:\Users\yangxg\Workspace ,工程名我把它叫做 blogproject ,那么首先在命令行工具进入 C:\Users\yangxg\Workspace 这个目录(如果你还停留在 Python 的命令栏里,先多按几次 ctrl + c
跳出来):
(blogproject_env) C:\WINDOWS\system32>cd C:\Users\yangxg\Workspace
然后运行如下命令:
(blogproject_env) C:\Users\yangxg\Workspace>django-admin startproject blogproject
再次申明一定要在虚拟环境下运行这些命令,虚拟环境的标志就是命令提示符前有 (blogproject_env) 这样的标记。以后所有的和 django 有关的命令都是在虚拟环境下运行,因此在运行前一定确保先开启了虚拟环境。
进入工程所在目录 C:\Users\yangxg\Workspace(你可能设置在其他路径),你会发现多了一个名为 blogproject 的文件夹,其内部文件结构如下:
blogproject /
manage.py
blogproject /
__init__.py
settings.py
urls.py
wsgi.py
最顶层的 blogproject/ 目录是我们刚刚指定的工程目录,其下面有一个 manage.py 文件,manage 是管理的意思,顾名思义 manage.py 就是 django 为我们生成的管理我们这个项目的 Python 脚本文件,以后用到时会再次介绍。与 manage.py 同级的还有一个名为 blogproject 的文件夹,这里面存放了一些 django 的配置文件,例如 settings.py 等等,以后用到时会详细介绍。此外,其下面的 __init__.py 指明了这是一个 Python 模块包。Python 规定在一个文件夹里包含 __init__.py 文件来指明这是一个 Python 模块包,这样你就可以在别的 Python 代码中引入它。
Hello django
网站需要运行在一个 web 服务器上,django 已经为我们提供了一个用于本地开发的 web 服务器。在命令行工具里进入到 manage.py 所在目录,运行下面的命令就可以在本机上开启一个 web 服务器:
(blogproject_env) C:\Users\yangxg\Workspace>cd C:\Users\yangxg\Workspace\blogproject
(blogproject_env) C:\Users\yangxg\Workspace\blogproject>python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 21, 2016 - 20:23:07
Django version 1.10.4, using settings 'blogproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
看到这样的信息表明我们的服务器开启成功,在浏览器输入 http://127.0.0.1:8000/ ,看到如下的页面提示信息:
It worked!
Congratulations on your first Django-powered page.
Of course, you haven't actually done any work yet. Next, start your first app by running
python manage.py startapp [app_label]
.You're seeing this message because you have
DEBUG = True
in your Django settings file and you haven't configured any URLs. Get to work!
It worked! django 工作了!一切准备就绪,开始进入我们的 django 博客开发之旅了!
注:这是 manage.py 的第一个用法,运行它的 runserver 命令开启本地开发服务器,以后还会遇到更多的命令。
命令栏工具下按 Ctrl + c 可以退出开发服务器(按一次没用的话连续多按几次)。重新开启则再次运行 python manage.py runserver
另外我们 django 默认的语言是英语,所以显示给我们的欢迎页面是英文的。我们在 django 的配置文件里稍作修改,让它支持中文。用任何一个文本编辑器打开 settings.py 文件,找到如下的两行代码:
blogproject/blogproject/settings.py
## 其它配置代码...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
## 其它配置代码...
把 LANGUAGE_CODE
改为 zh-hans
,TIME_ZONE
改为 Asia/Shanghai
:
blogproject/blogproject/settings.py
# 其它配置代码
LANGUAGE_CODE = 'zh-hans' # 把英文改为中文
TIME_ZONE = 'Asia/Shanghai' # 把国际时区改为中国时区
# 其它配置代码
再次运行开发服务器,并在浏览器打开 http://127.0.0.1:8000/,可以看到 django 已经支持中文了。
(blogproject_env) C:\Users\yangxg\Workspace\blogproject>python manage.py runserver
Performing system checks...
正常工作了!
祝贺你的第一个由Django驱动的页面。
当然,您还没有真正开始工作。接下来,请执行
python manage.py startapp [app_label]
来创建您的第一个应用。您看到此消息是由于Django的配置文件设置了
DEBUG = True
,您还没有配置任何路由URL。开始工作吧。