开笔有话说
接触django
有一段时间了,发现国内网站上的django
学习资料,虽然有不少,但大多有老旧的通病,所基于的版本简直是太旧了,就拿《the django book》
来说,这本书应该是很多人接触django
的第一本教程了,可是居然是基于1.1版本的……要知道,现在已经出了1.9版本的django了,这中间差了多少?
教程版本落后,在实战学习中往往会出现很多兼容性问题,笔者当时就吃了不少这方面的亏,学习1.1的教程,拿1.8的版本来实践,可想而知,得有多少坑……没办法,谁让国内django方面的实战案例教程如凤毛麟角呢?最后,只能拿来1.8版本的api文档啃英文了。
鉴于以上,笔者想写一系列实战教程,针对最新的django版本,与大家分享,为新手们学习django提供捷径,同时巩固个人知识体系,如有笔误,欢迎大神们指点一二。
案例介绍
在这个实战项目里,我们会从头开始,一步步搭建一个完整的blog站点。从开发环境到生产环境的发布,会分成几部分文章来完成。
请注意,此为实战项目教程,不会从头讲基础的django知识。建议有一定的django基础后再阅读该系列文章。
该实战项目主要包含以下几个部分:
基本部分
安装
django
,搭建隔离的开发环境创建工程及数据库基本配置
创建
blog
应用并对其建立模型搭建
blog
站点的后台管理系统admin
利用
bootstrap
框架和django
的模板及视图系统构建前端基本页面增加分页
增强部分
实现发送邮件功能
创建表单及其处理
创建基于模型的表单
集成第三方应用
构建复杂的查询集
进一步扩展
创建自定义模板标签
创建自定义模板过滤器
添加站点地图sitemap
添加订阅
利用
Solr
和Haystack
建立站内搜索引擎
版本说明
本项目要用到的软件及版本如下
python==2.7+
django==1.8.6
virtualenv==13.1.2
下面咱们正式开始进行blog项目的开发。
建立隔离的开发环境
开发项目的第一点,也是首要的,就是建立一个隔离的开发环境,避免污染本机系统,同时保证不同版本的控制与隔离。其重要性,这里不再赘述,以后会单独写一篇文章具体讲述,以及如何使用virtualenv
。
1.创建一个新的目录
lwj@macpro:~$ mkdir myproject
lwj@macpro:~$ cd myproject/
2.在新目录myproject
中,建立独立的python运行环境
lwj@macpro:~/myproject$ virtualenv --no-site-packages venv
New python executable in venv/bin/python
Installing setuptools, pip, wheel...done.
lwj@macpro:~/myproject$ ls
venv/
lwj@macpro:~/myproject$ cd venv
lwj@macpro:~/myproject/venv$ ls
bin/ include/ lib/
lwj@macpro:~/myproject/venv$
命令virtualenv venv
就可以创建一个独立的Python运行环境venv
,我们还加上了参数--no-site-packages
,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
可看到在myproject
目录下生成了一个新的文件夹venv
,里面包含bin
、include
、lib
三个目录,即组成了新的、干净的、隔离的python运行环境。
3.激活运行环境
运行下面这行命令就能激活上面建立的隔离的python运行环境
lwj@macpro:~/myproject$ source venv/bin/activate
(venv)lwj@macpro:~/myproject$
如上所示,在命令行的前面出现(venv)
前缀,即表示我们刚刚建立的隔离环境venv
已被成功激活。这时所有的操作都是在venv
这个Python独立的运行环境下,不会受外界系统python环境的影响,也不会影响到外界系统的Python环境。
此时,在此环境下安装的所有的python包都会被默认安装到venv/lib/python2.7/site-packages/
目录下。
【补充】注销激活,deactivate
即可。
(venv)lwj@macpro:~/myproject$ deactivate
安装Django
安装Django,版本1.8.6
隔离的环境搭建好了,接着就可以安装django了。
利用命令pip install Django==1.8.6
,就可安装指定版本为1.8.6
的django
了。当然,安装django的方法有多种,我们在这里选择最方便的一种,直接用pip
安装。因为在创建venv
隔离环境的时候,已经预装好了pip
,所以这里用pip
安装django
就很方便了,就是一句命令的事儿。以后在该项目中所有用到的python包,我们都会直接用pip
来安装。
(venv)lwj@macpro:~/myproject/venv$ pip install Django==1.8.6
Collecting Django==1.8.6
*
*
*
安装完成。
在venv/lib/python2.7/site-packages/
目录下会看到新增加Django-1.8.6.dist-info/
和django/
文件夹。
验证是否成功安装
方法1:pip list
(venv)lwj@macpro:~/myproject/venv$ pip list
Django (1.8.6)
pip (7.1.2)
setuptools (18.2)
wheel (0.24.0)
会发现有Django (1.8.6)
,说明已安装Django
,而且可看出其版本为1.8.6
。
方法2:import django
打开python
命令终端
(venv)lwj@macpro:~/myproject/venv$ python
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
导入django包,
>>> import django
>>> django.VERSION
(1, 8, 6, 'final', 0)
成功打印出django
的版本,到此,则表示django
已成功安装。
后面我们就可以开始创建blog工程了……请见下章