合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# 第二章:入门 # 第二章:入门 由于现代Web开发环境由多个部件组成,安装Django需要几个步骤。 这一章,我们将演示如何安装框架以及一些依赖关系。 因为Django就是纯Python代码,它可以运行在任何Python可以运行的环境,甚至是手机上! 但是这章只提及Django安装的通用脚本。 我们假设你把它安装在桌面/笔记本电脑或服务器。 往后,在第12章,我们将讨论如何部署Django到一个生产站点。 ## 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 已经安装好了. ``` <pre class="calibre9">``` 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/找到。](http://www.djangoproject.com/download/%E6%89%BE%E5%88%B0%E3%80%82) 如果您在用Linux系统,其中包括Django的包,使用默认的版本是个好主意。 这样,你将会通过系统的包管理得到安全的升级。 如果你的系统没有自带Django,你可以自己下载然后安装框架。 首先,下载名字类似于`Django-1.0.2-final.tar.gz`压缩文件。(下载到哪里无所谓,安装程序会把Django文件放到正确的地方。)解压缩之后运行`setup.py install`,像操作大多数Python库一样。 以下是如何在Unix系统上安装的方法: 1. `tar xzvf Django-*.tar.gz` 。 2. `cd Django-*` 。 3. `sudo python setup.py install` 。 Windows系统上,推荐使用7-Zip([http://www.djangoproject.com/r/7zip/)来解压缩`.tar.gz`文件。](http://www.djangoproject.com/r/7zip/)%E6%9D%A5%E8%A7%A3%E5%8E%8B%E7%BC%A9%60.tar.gz%60%E6%96%87%E4%BB%B6%E3%80%82) 解压缩完成后,以管理员权限启动一个DOS Shell(命令提示符),然后在名字以`Django-`开始的目录里执行如下命令: ``` <pre class="calibre9">``` 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,如果你不确定,可以输入如下命令: ``` <pre class="calibre9">``` python -c 'import sys, pprint; pprint.pprint(sys.path)' ``` ``` > 上面的结果会包含site-packages的目录 > > 在site-packages目录下,创建一个文件 > > > django.pth,编辑这个文件,包含djtrunk目录的全路径 利润,此文件包含如下行: ``` <pre class="calibre9">``` /home/me/code/djtrunk ``` ``` 1. 将 `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`模块了: ``` <pre class="calibre9">``` >>> import django >>> django.VERSION (1, 1, 0, final', 1) ``` ``` 交互解释器示例 Python 交互解释器是命令行窗口的程序,通过它可以交互式地编写 Python 程序。 要启动它只需运行 `python` 命令。 我们在交互解释器中演示Python示例将贯穿整本书。 你可以用三个大于号 (`&gt;&gt;&gt;` )来分辨出示例,三个大于号就表示交互提示符。 如果你要从本书中拷贝示例,请不要拷贝提示符。 在交互式解释器中,多行声明用三个点 (`...`)来填补。 例如: ``` <pre class="calibre9">``` >>> 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自行加入的,不属于我们的输入。 但是包含它们是为了追求解释器的正确输出。 如果你拷贝我们的示例去运行,千万别拷贝这些点。 ## 安装数据库 这会儿,你可以使用django写web应用了,因为django只要求python正确安装后就可以跑起来了。 不过,当你想开发一个*数据库驱动*的web站点时,你应当需要配置一个数据库服务器。 如果你只想玩一下,可以不配置数据库,直接跳到 开始一个project 部分去,不过你要注意本书的例子都是假设你配置好了一个正常工作的数据库。 Django支持四种数据库: - PostgreSQL (<http://www.postgresql.org/>) - SQLite 3 (<http://www.sqlite.org/>) - MySQL (<http://www.mysql.com/>) - Oracle (<http://www.oracle.com/>) 大部分情况下,这四种数据库都会和Django框架很好的工作。 (一个值得注意的例外是Django的可选GIS支持,它为PostgreSQL提供了强大的功能。)如果你不准备使用一些老旧系统,而且可以自由的选择数据库后端,我们推荐你使用PostgreSQL,它在成本、特性、速度和稳定性方面都做的比较平衡。 设置数据库只需要两步: - 首先,你需要安装和配置数据库服务器本身。 这个过程超出了本书的内容,不过这四种数据库后端在它的网站上都有丰富的文档说明。 如果你使用的是共享主机,可能它们已经为你设置好了。 - 其次,你需要为你的服务器后端安装必要的Python库。 这是一些允许Python连接数据库的第三方代码。 我们会在之后的章节简要介绍,对于某一种数据库来说,它单独需要安装的东西。 如果你只是玩一下,不想安装数据库服务,那么可以考虑使用SQLite。 如果你用python2.5或更高版本的话,SQLite是唯一一个被支持的且不需要以上安装步骤的数据库。 它仅对你的文件系统中的单一文件读写数据,并且Python2.5和以后版本内建了对它的支持。 在Windows上,取得数据库驱动程序可能会令人沮丧。 如果你急着用它,我们建议你使用python2.5。 ### 在 Django 中使用 PostgreSQL 使用 PostgreSQL 的话,你需要从 <http://www.djangoproject.com/r/python-pgsql/> 下载 `psycopg` 这个开发包。 我们建议使用`psycopg2`,因为它是新的,开发比较积极,且更容易安装。 留意你所用的是 版本 1 还是 2,稍后你会需要这项信息。 如果在 Windows 平台上使用 PostgreSQL,可以从 <http://www.djangoproject.com/r/python-pgsql/windows/> 获取预编译的 `psycopg` 开发包的二进制文件。 如果你在用Linux,检查你的发行版的软件包管理系统是否提供了一套叫做python-psycopg2,psycopg2-python,python-postgresql这类名字的包。 ### 在 Django 中使用 SQLite 3 如果你正在使用Python 2.5版本或者更高,那么你很幸运: 不要求安装特定的数据库,因为Python支持和SQLite进行通信。 向前跳到下一节。 如果你用的是Python2.4或更早的版本,你需要 SQLite 3*而不是*版本2,这个可从[http://www.djangoproject.com/r/sqlite/`pysqlite`http://www.djangoproject.com/r/python-sqlite/](http://www.djangoproject.com/r/sqlite/%60pysqlite%60http://www.djangoproject.com/r/python-sqlite/) 确认一下你的`pysqlite`版本是2.0.3或者更高。 在 Windows 平台上,可以跳过单独的 SQLite 二进制包安装工作,因为它们已被静态链接到 `pysqlite` 二进制开发包中。 如果你在用Linux,检查你的发行版的软件包管理系统是否提供了一套叫做python-sqlite3,sqlite-python,pysqlite这类名字的包。 ### 在 Django 中使用 MySQL django要求MySQL4.0或更高的版本。 3.X 版本不支持嵌套子查询和一些其它相当标准的SQL语句。 你还需要从 <http://www.djangoproject.com/r/python-mysql/> 下载安装 `MySQLdb` 。 如果你正在使用Linux,检查下你系统的包管理器是否提供了叫做python-mysql,python-mysqldb,myspl-python或者相似的包。 ### 在Django中使用Oracle数据库 django需要Oracle9i或更高版本。 如果你用Oracle,你需要安装`cx_Oracle`库,可以从[http://cx-oracle.sourceforge.net/获得。](http://cx-oracle.sourceforge.net/%E8%8E%B7%E5%BE%97%E3%80%82) 要用4.3.1或更高版本,但要避开5.0,这是因为这个版本的驱动有bug。 ### 使用无数据库支持的 Django 正如之前提及过的,Django 并不是非得要数据库才可以运行。 如果只用它提供一些不涉及数据库的动态页面服务,也同样可以完美运行。 尽管如此,还是要记住: > Django 所捆绑的一些附加工具 一定 需要数据库,因此如果选择不使用数据库,你将不能使用那些功能。 (我们将在本书中自始至终强调这些功能) ## 开始一个项目 一但你安装好了python,django和(可选的)数据库及相关库,你就可以通过创建一个*project*,迈出开发django应用的第一步。 项目 是 Django 实例的一系列设置的集合,它包括数据库配置、Django 特定选项以及应用程序的特定设置。 如果第一次使用 Django,必须进行一些初始化设置工作。 新建一个工作目录,例如 `/home/username/djcode/` ,然后进入该目录。 这个目录应该放哪儿? 有过 PHP 编程背景的话,你可能习惯于将代码都放在 Web 服务器的文档根目录 (例如 `/var/www` 这样的地方)。 而在 Django 中,把任何Python代码和web server的文档根(root)放在一起并不是一个好主意。因为这样做有使人能通过网路看到你原代码的风险. 那就太糟了。 把代码放置在文档根目录 **之外** 的某些目录中。 转到你创建的目录,运行命令`django-admin.py startproject mysite`。这样会在你的当前目录下创建一个目录。`mysite` 注意 如果用的是 `setup.py` 工具安装的 Django , `django-admin.py` 应该已被加入了系统路径中。 如果你使用一个trunk版本,你会在 `djtrunk/django/bin` 下发现 `django-admin.py` 。你将来会常用到`django-admin.py`,考虑把它加到你的系统路径中去比较好。 在Unix中, 你也可以用来自`/usr/local/bin` 的符号连接, 用一个命令, 诸如`sudo ln -s /path/to/django/bin/django-admin.py /usr/local/bin/django-admin.py` . 在Windows中, 你需要修改你的 `PATH` 环境变量. 如果你的django是从linux发行版中安装的,那么,常会被`django-admin.py`替代。`django-admin` 如果在运行时,你看到权限拒绝的提示,你应当修改这个文件的权限。`django-admin.py startproject` 为此, 键入 `cd /usr/local/bin`转到`django-admin.py`所在的目录,运行命令`chmod +x django-admin.py` `startproject` 命令创建一个目录,包含4个文件: ``` <pre class="calibre9">``` mysite/ __init__.py manage.py settings.py urls.py ``` ``` 文件如下: - `__init__.py` :让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。 这是一个空文件,一般你不需要修改它。 - `manage.py` :一种命令行工具,允许你以多种方式与该 Django 项目进行交互。 键入`python manage.py help`,看一下它能做什么。 你应当不需要编辑这个文件;在这个目录下生成它纯是为了方便。 - `settings.py` :该 Django 项目的设置或配置。 查看并理解这个文件中可用的设置类型及其默认值。 - `urls.py`:Django项目的URL设置。 可视其为你的django网站的目录。 目前,它是空的。 尽管这些的文件很小,但这些文件已经构成了一个可运行的Django应用。 ### 运行开发服务器 为了安装后更多的体验,让我们运行一下django开发服务器看看我们的准系统。 django开发服务是可用在开发期间的,一个内建的,轻量的web服务。 我们提供这个服务器是为了让你快速开发站点,也就是说在准备发布产品之前,无需进行产品级 Web 服务器(比如 Apache)的配置工作。 开发服务器监测你的代码并自动加载它,这样你会很容易修改代码而不用重启动服务。 如果你还没启动服务器的话,请切换到你的项目目录里 (`cd mysite` ),运行下面的命令: ``` <pre class="calibre9">``` python manage.py runserver ``` ``` 你会看到些像这样的 ``` <pre class="calibre9">``` Validating models... 0 errors found. Django version 1.0, using settings 'mysite.settings' Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C. ``` ``` 这将会在端口8000启动一个本地服务器, 并且只能从你的这台电脑连接和访问。 既然服务器已经运行起来了,现在用网页浏览器访问 <http://127.0.0.1:8000/> 。 你应该可以看到一个令人赏心悦目的淡蓝色Django欢迎页面。 它开始工作了。 在进一步学习之前, 一个重要的,关于开发网络服务器的提示很值得一说。 虽然 django 自带的这个 web 服务器对于开发很方便,但是,千万不要在正式的应用布署环境中使用它。 在同一时间,该服务器只能可靠地处理一次单个请求,并且没有进行任何类型的安全审计。 发布站点前,请参阅第 20 章了解如何部署 Django 。 更改这个 Development Server 的主机地址或端口 默认情况下, `runserver` 命令在 8000 端口启动开发服务器,且仅监听本地连接。 要想要更改服务器端口的话,可将端口作为命令行参数传入: ``` <pre class="calibre9">``` python manage.py runserver 8080 ``` ``` 通过指定一个 IP 地址,你可以告诉服务器–允许非本地连接访问。 如果你想和其他开发人员共享同一开发站点的话,该功能特别有用。 `0.0.0.0` 这个 IP 地址,告诉服务器去侦听任意的网络接口。 ``` <pre class="calibre9">``` python manage.py runserver 0.0.0.0:8000 ``` ``` 完成这些设置后,你本地网络中的其它计算机就可以在浏览器中访问你的 IP 地址了。比如: <http://192.168.1.103:8000/> . (注意,你将需要校阅一下你的网络配置来决定你在本地网络中的IP 地址) Unix用户可以在命令提示符中输入ifconfig来获取以上信息。 使用Windows的用户,请尝试使用 ipconfig 命令。 ## 接下来做什么? 好了,你已经安装好所需的一切, 并且开发服务器也运行起来了,你已经准备好继续 学习基础知识–用Django伺候网頁 这一章的内容了。