为什么写这个教程?
我从去年开始接触 Python,为了能让学习 Python 的过程不那么枯燥,我决定一边学习 Python 的同时一边利用所学的东西开发一个网站。在权衡了多个 Python 界流行的 Web 框架后,我决定选择django。
然而 django 在国内的 Web 开发者中使用率其实并不高(不仅仅是 django,包括其他 Python Web 框架例如 Flask 等也面临同样的境遇),于是寻找合适的学习资料成了一件苦差。在两个多月的时间内,我阅读 The Django Book2.0 中文版(其内容已经严重过时),然后从网上搜到了一个利用 django 开发一个简单的个人博客的教程,然而其中遇到的各种坑让我在经历了一个月的痛苦发开后彻底放弃了 django。django 高质量的中文学习资料实在太少了,而且中文社区支持也不友好,新人在开发中遇到问题通常求助无门。
大概在几个月前,我利用空闲的时间开始学习 django 的官方文档,特别是其入门教程的 6 个 Parts 循序渐进,既覆盖了 django 大部分的核心特性,又对新人十分友好,这重新激起了我对 django 的兴趣。于是我心血来潮地在网上发起了一个组建 django 五人学习小组的活动,很快便得到了大家的响应。我们以互相分享各自所学的 django 知识并且利用这些知识合作开发一个项目的形式,顺利地开发了一个 django 个人博客和一个 django 社区应用,并且还发布了一套 django 博客教程,但是由于当时自己也是学习 django 不久,对 django 的掌握程度还很不够,教程也比较简略,对想学习 django 的开发者依然不够友好。
官方文档的入门教程已经非常好了,但一方面其在语言方面(英语,在一些国内开发者的贡献下现在也有了非官方的中文翻译版本)会对国内的一些开发者产生一定的困扰,另一方面它教我们一步步开发一个简单的投票应用,我感觉这稍稍会有一点枯燥和不实用。所以我决定编写这一套教程,带领想要学习 django 开发的朋友一步步开发一个个人博客,旨在顺便代替 django 官方文档中的入门教程,让开发的过程更加有趣一点,让开发出来的东西更加实用一点。这个博客已经具备个人博客该有的基本功能,我们可以把代码部署到生产服务器上开始使用。
谁适合这个教程?
这个教程的目的是一步步地带着大家使用 django 开发一个博客。我假设你以前从未接触过 django 但想成为一名 django 开发者,或者你略微了解过 django 但对如何使用 django 进行开发依然有一些困惑,或者是从其它的 Web 编程框架转过来的开发者。同时我假设你已经具备以下一些基本条件:
了解最基本的 Python 语法,或者你从未学习过 Python 但是有学习其他编程语言的经历。
了解最基本的 HTML,如果你完全不知道 HTML是个什么东西,建议花费 2-3 天时间学习这个不错的 HTML 教程。
(最好具备但不是必须的)HTTP 相关的基本概念,如果你目前完全没有概念也没关系,我会在教程中做适当讲解,但那时如果你依然不懂,建议花费几天时间学习其基本概念。
总之,django 博客教程完全面向新人,教程将带你一步步地(Step By Step)使用 django 开发一个博客,教程和官方文档的入门教程一样,涵盖了 django 开发的大部分核心特性,并且尽我所能地做到对新人友好。同时我也为大家提供了一个交流的社区(下面会介绍),以便在开发中遇到问题能得到及时的帮助。
项目预览与代码托管方式
教程最终开发的博客将是这个样子:django 博客教程演示项目
代码托管在 GitHub(https://github.com/zmrenwu/django-blog-tutorial),每篇教程的代码都放在单独的分支中,分支名看起来像是下面的样子,先后顺序我想应该很容易识别:
Step1_build-development-environment
Step2_create-blog-app
互动方式
教程以 Step by Step 的形式,一步步带读者使用 django 开发一个博客。通常情况下,只要你完全依照教程的指导,你将顺利地完成博客系统的开发。但尽管如此,由于开发环境的差异,即使你严格按照教程里的指导,依然有可能遇到无法预料的异常。如果你个人无法解决这些问题,你可以通过以下方式寻求帮助,这可以帮你以最快的速度解决问题。
对于简单的问题,请在我个人博客的评论区留言,每天我都会查看新的留言并且回复相关的问题。
注:由于本教程会被转载到各大博客平台,不是每个平台下的留言我都会看到并回复。因此建议统一到我个人博客下留言,或者采用下面的方式。
(推荐)对于比较复杂的问题,请到社区发帖求助。同样我也会每天查看新发表的帖子,并且予以回复。在这里求助的另一个好处是其他人也能看到你的问题,并且给予建议和帮助。社区地址:http://pythonzh.cn/
本教程使用的开发环境
本教程写作时开发环境的系统平台为 Windows 10(64 位),Python 版本为 3.5.2 (64 位),django 版本为 1.10.6。建议尽可能地与教程的开发环境保持一致(尤其是 Python 与 django 版本)。建议的 Python 版本为 3.4 或以上,django 版本号必须为 1.10.x。
安装 Python
Windown 下安装 Python 非常简单,去这里找到 Python 3.5 的下载地址,根据你的系统选择 32 位或者 64 位的安装包,下载好后双击安装即可。如果遇到问题,建议尝试百度相关教程。如果始终无法解决,可以到社区发帖求助。
安装完后检测一下 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
(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
>>>
版权声明
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可。
Python 中 文 社 区
Python中文开发者的精神家园
合作、投稿请联系微信:
pythonpost
本文为作者原创作品,未经作者授权同意禁止转载
点击阅读原文可搜索历史文章