python 安装
django本身是纯python编写的,所以安装框架的第一步是确保你已经安装了python。
python版本
核心django框架可以工作在2.3至2.6(包括2.3和2.6)之间的任何python版本。 django的可选gis(地理信息系统)支持需要python 2.4到2.6。
如果你不确定要安装python的什么版本,并且你完全拿不定主意的话,那就选2.x系列的最新版本吧。 版本2.6。 虽然django在2.3至2.6版之间的任意python版本下都一样运行得很好,但是新版本的python提供了一些你可能比较想应用在你的程序里的,更加丰富和额外的语言特性。 另外,某些你可能要用到的django第三方插件会要求比python 2.3更新的版本,所以使用比较新的python版本会让你有更多选择。
django和 python 3.0
在写作本书的时候,python3.0已经发布,但django暂时还不支持。 python3.0这个语言本身引入了大量不向后兼容的改变,因此,我们预期大多数主要的python库和框架将花几年才能衔接,包括django。
如果你是个python新手并且正迷茫于到底是学习python 2.x还是python 3.x的话,我们建议你选择python 2.x。
安装
如果使用的是 linux 或 mac os x ,系统可能已经预装了 python 。在命令提示符下 (或 os x 的终端中) 输入 python ,如果看到如下信息,说明 python 已经装好了: 在命令行窗口中输入python (或是在os x的程序/工具/终端中)。 如果你看到这样的信息,说明 python 已经安装好了.
python 2.4.1 (#2, mar 31 2005, 00:05:10)
[gcc 3.3 20030304 (apple computer, inc. build 1666)] on darwin
type “help”, “copyright”, “credits” or “license” for more information.
>>>
否则, 你需要下载并安装python. 它既快速又方便,而详细说明可参考http://www.python.org/download/
安装 django
任何时候,都有两个不同版本的django供您选择。 最新的官方发行版和有风险的主干版本。 安装的版本取决于您的优先选择。 你需要一个稳定的通过测试的django,或是你想要包括最新功能的版本,也许你可对django本身作贡献,而把稳定作为代价?
我们推荐选定一个正式发布版本,但重要的是了解到主干开发版本的存在,因为在文档和社区成员中你会发现它被提到。
安装官方发布版
官方发布的版本带有一个版本号,例如1.0.3或1.1,而最新版本总是可以在http://www.djangoproject.com/download/找到。
如果您在用linux系统,其中包括django的包,使用默认的版本是个好主意。 这样,你将会通过系统的包管理得到安全的升级。
如果你的系统没有自带django,你可以自己下载然后安装框架。 首先,下载名字类似于django-1.0.2-final.tar.gz压缩文件。(下载到哪里无所谓,安装程序会把django文件放到正确的地方。)解压缩之后运行setup.py install,像操作大多数python库一样。
以下是如何在unix系统上安装的方法:
tar xzvf django-*.tar.gz
cd django-*
sudo python setup.py install
windows系统上,推荐使用7-zip(http://www.djangoproject.com/r/7zip/)来解压缩.tar.gz文件。 解压缩完成后,以管理员权限启动一个dos shell(命令提示符),然后在名字以django-开始的目录里执行如下命令:
python setup.py install
如果你很好奇: django将被安装到你的python安装目录“ 的site-package“ 目录(python从该目录寻找第三方库)。 通常情况下,这个目录在/usr/lib/python2.4/site-packages。
安装trunk版本
最新最好的django的开发版本称为trunk,可以从django的subversion处获得。 如果你想尝鲜,或者想为django贡献代码,那么你应当安装这个版本。
subversion 是一种与 cvs 类似的免费开源版本控制系统,django 开发团队使用它管理 django 代码库的更新。 你可以使用 subversion 客户端获取最新的 django 源代码,并可任何时候使用 local checkout 更新本地 django 代码的版本,以获取 django 开发者所做的最近更新和改进。
请记住,即使是使用trunk版本,也是有保障的。 因为很多django的开发者在正式网站上就是用的trunk版本,他们会保证trunk版本的稳定性。
遵循以下步骤以获取最新的 django 主流代码:
确保安装了 subversion 客户端。 可以从 http://subversion.tigris.org/ 免费下载该软件,并从 http://svnbook.red-bean.com/ 获取出色的文档。
(如果你在使用mac os x 10.5或者更新的版本,你很走运,subversion应该就可以安装django。 你可以在终端上输入svn –version来验证。
使用 svn co http://code.djangoproject.com/svn/django/trunk djtrunk 命令查看主体代码。
找到你的python的site-packages目录。 一般为/usr/lib/python2.4/site-packages,如果你不确定,可以输入如下命令:
python -c ‘import sys, pprint; pprint.pprint(sys.path)’
上面的结果会包含site-packages的目录
在site-packages目录下,创建一个文件django.pth,编辑这个文件,包含djtrunk目录的全路径 利润,此文件包含如下行:
/home/me/code/djtrunk
将 djtrunk/django/bin 加入系统变量 path 中。该目录中包含一些像 django-admin.py 之类的管理工具。 此目录包含管理工具,例如:django-admin.py
提示:
如果之前没有接触过 .pth 文件,你可以从 http://www.djangoproject.com/r/python/site-module/ 中获取更多相关知识。
从 subversion 完成下载并执行了前述步骤后,就没有必要再执行 python setup.py install 了,你刚才已经手动完成了安装!
由于 django 主干代码的更新经常包括 bug 修正和特性添加,如果真的着迷的话,你可能每隔一小段时间就想更新一次。 在 djtrunk 目录下运行 svn update 命令即可进行更新。 当你使用这个命令时,subversion 会联络 http://code.djangoproject.com ,判断代码是否有更新,然后把上次更新以来的所有变动应用到本地代码。 就这么简单。
最后,如果你使用trunk,你要知道使用的是哪个trunk版本。 如果你去社区寻求帮助,或是为django框架提供改进,知道你使用的版本号是非常重要的。 因此,当你到社区去求助,或者为 django 提供改进意见的时候,请时刻记住说明你正在使用的 django 的版本号。 如何知道你正在使用的 django 的版本号呢?进入“ djtrunk“ 目录,然后键入 svn info ,在输出信息中查看 revision: (版本:) 后跟的数字。 django在每次更新后,版本号都是递增的,无论是修复bug、增加特性、改进文档或者是其他。 在一些django社区中,版本号甚至成为了一种荣誉的象征,我从[写上非常低的版本号]开始就已经使用djano了。
测试django安装
让我们花点时间去测试 django 是否安装成功,并工作良好。同时也可以了解到一些明确的安装后的反馈信息。 在shell中,更换到另外一个目录(不是包含django的目录),然后输入python来打开python的交互解释器。如果安装成功,你应该可以导入django模块了:
>>> import django
>>> django.version
(1, 1, 0, final’, 1)
交互解释器示例
python 交互解释器是命令行窗口的程序,通过它可以交互式地编写 python 程序。 要启动它只需运行 python 命令。
我们在交互解释器中演示python示例将贯穿整本书。 你可以用三个大于号 (>>> )来分辨出示例,三个大于号就表示交互提示符。 如果你要从本书中拷贝示例,请不要拷贝提示符。
在交互式解释器中,多行声明用三个点 (…)来填补。 例如:
>>> print “””this is a
… string that spans
… three lines.”””
this is a
string that spans
three lines.
>>> def my_function(value):
… print value
>>> my_function(‘hello’)
hello
这三个在新行开始插入的点,是python shell自行加入的,不属于我们的输入。 但是包含它们是为了追求解释器的正确输出。 如果你拷贝我们的示例去运行,千万别拷贝这些点。