Tuesday, December 02, 2008

Django入门

开始Django之旅


章节介绍


Django和Python可以在多个操作系统平台是使用,本章我们将讲述如何在UNIX/Linux, Windows 和 Mac OS X 上搭建Django开发环境,而且会创建第一个Django应用并把它链接到数据库上。

我们将学习下面这些内容:

  • 安装Python

  • 安装Django

  • 安装一个数据库系统

  • 创建第一个项目

  • 配置数据库环境

  • 运行这个应用程序

搭建开发环境

我们的开发环境包括了Django,Python和一个数据库,有很多数据库可供选择,但是我们下面的例子中使用了Sqlite3数据库,因为这个数据库直接包含在了Python的下载版本中,这一节中我们将学习如何安装这些必要的软件。

安装Python

Django是由Python开发的,所以我们搭建开发环境的第一步是安装Python,Django需要Python2.3或以上版本,建议最好安装Python的最新版本。Python可以运行在大多数操作系统平台上,而且安装也非常简单,由于操作系统平台的不同安装方法也各不相同,下面我们将分别介绍如何在不同的主流操作系统平台上安装Python:.

在Windows上安装Python

Windows上安装Python非常简单,你可以从Python站点http://www.python.org/download/ 上下载一个标准的windows安装包。然后像安装其他windows软件一样,双击.exe文件,然后按照图形化的提示一步步安装完成即可。之后需要做的就是设置环境变量,这样你就可以通过命令行的方式使用Python了。方法是打开“控制面板”,双击“系统”,然后选择“高级”,单击“环境变量”按钮,找到“系统环境变量”中的path,把刚才Python的安装路径加在后面就可以了,记住新增的环境变量要用分号隔开。

好了这样windows上的Python就安装好了,如果你想试试安装是否成功,可以打开一个 命令行,然后输入python,如果你看到一个shell交换环境,恭喜你,Python已经安装成功了。

在UNIX/Linux上安装Python

如果你使用的是UNIX/Linux平台,那么你应该不用再单独安装Python了,因为它们是操作系统内置安装的。为了检查系统上是否安装了Python,打开一个终端,然后输入python并回车,你应该看到类似下面的信息,这说明系统上已经安装了Python:

Python 2.5.1 (r251:54863, May 2 2007, 16:56:35)

[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>>

上面信息的第一行说明了你当前使用的版本,如果你得到的是错误或者是一个低版本的Python,那么你就需要安装最新版本的Python了。Unix和Linux用户建议通过系统包管理器更新最新的Python,对于其他APT的Linux(比如Debian 和Ubuntu),安装方法是这样的:打开一个终端输入如下内容:

$ sudo apt-get update

$ sudo apt-get install python

然后按照提示安装,其他类型的Linux用户请参照当前使用Linux的说明手册进行安装。

在Mac OS上安装Python

Mac OS上一般已经内置安装了Python,如果你的Python版本低于2.3,请从http://www.python.org/download/mac/ 下载最新的Python安装包进行安装。好了,现在Python的安装我们已经介绍完了,下面介绍如何安装Djiango。

安装Django

Django的安装非常简单,只是不同的操作系统略有不同。由于Python可以运行于任何操作系统上,所以Django也提供了一个可以运行于不同操作系统单独的包。我们可以从http://www.djangoproject.com/download/ 上下载最新的Django安装包,本书的例子是基于Django0.96的,不过大部分代码应该同样可以运行在最新的Django下。

在Windows上安装Django

下载最新的Django,将其解压缩到c:\下,打开一个命令行并进入Django的解压缩目录中。比如c:\>cd c:\Django-x.xx(x是Django的版本号),然后执行下面的命令来安装Django。

c:\Django-x.xx>python setup.py install

如果上面的方法行不通,你可以把解压缩的Django直接复制到python的包路径下Lib\site-packages。最后一步是把django-admin.py文件(位于Django-x.xx\django\bin)复制到系统路径下比如c:\windows\或者Python的安装路径下,比如c:\python25。执行完以上步骤后,你就可以把原来解压缩的Django安装包删除了,因为我们已经不在需要他了。好了,下面我们来测试一下,Django是否已经被正确的安装了:

c:\>django-admin.py --version

如果你看到了Django相关的安装信息,那么说明你已经成功的安装了Django。

在Unix/Linux和Mac OS上安装Django

在这些平台上安装Django是非常简单的,只要将Django安装包解压缩到一个目录下,执行相应命令就可以了:

$ tar xfz Django-x.xx.tar.gz

$ cd Django-x.xx

$ sudo python setup.py install

如果你的Linux是Ubuntu,你可以直接通过包管理控制台安装一个名为django-python的包。或者执行下面的命令:

$ sudo apt-get install python-django

然后通过下面的命令看看安装是否成功:

$ django-admin.py --version

如果你看到Django的版本信息,恭喜你Django已经安装成功了。

安装数据库系统

运行Django是不需要安装Django的,但是对于我们应用程序的需求,我们想把我们的业务数据存储在数据库中,现在看看如何在Django中安装数据库。

值得一提的是Django支持很多数据库引擎:MySQL, PostgreSQL, MS SQL Server, Oracle, 以及 SQLite。然后庆幸的是,你只需要掌握一种单独的数据库API就可以了,这归功于Django的数据层将不同的数据库访问接口进行了很好的抽象。我们在后面会讲到这部分内容,不过现在你只要知道,在Django中不同数据库之间的切换是非常简单的。


如果你安装的是Python2.5或者以上的版本,那么在开发阶段你可以不用安装数据库,Python安装中已经自带了sqlite3的模块。和通常的客户端/服务器模式的数据库引擎不同,sqlite把数据存储在一个单独的文件中。因此本书中的例子将使用SQLite作为我们的数据库引擎。当然你可以安装其他数据库引擎,我们只要简单的修改一个配置文件就可以了。比如你想使用Mysql,除了在系统上安装最新的Mysql发现版本外,你需要下载一个Python的Mysql数据库驱动程序包,然后修改Django中的数据库配置文件就可以了。

如果你安装的不是Python2.5那么从http://www.pysqlite.org/ 可以下载到SQLite的Python安装包。

我们需要安装Apache 或者其他web应用服务器吗?答案是,在开发阶段这是不必要的。Django提供了一个内置的轻量级的web服务器,当我们的程序要部署到真正的产品环境中时,我们在把它放到Apache上,后面的章节会讲到如何将部署。不过就像Django中数据库之间的切换非常方便一样,将你的应用程序发布的Apache这样的web服务器上也是非常简单的。

创建第一个项目

现在所有必需的软件都已经装好了,是时候开始我们的Django之旅了,我们先来创建第一个项目。

你一定还记得在我们前面的小节中介绍如何校验Django是否安装成功的时候用到了一个文件django-admin.py,它是Django的核心工具,你可以通过它完成一些列的有关项目创建和管理控制的任务,包括:

  • 创建一个新的项目

  • 创建并管理项目的数据库

  • 对当前的项目进行校验

  • 启动web服务器

我们将在后面的内容中通过一个“书签共享”的应用程序来逐一介绍如何完成这些任务。

创建一个空的项目

要创建一个空的项目我们需要打开终端(Windows用户打开一个命令行控制台)并输入下面的内容:

$ django-admin.py startproject django_bookmarks

这个命令将创建一个名为django_bookmarks的文件夹并在下面创建一些必要的项目初始化文件,让我们看看都是些什么文件:

django_bookmarks/

         __init__.py

manage.py

settings.py

urls.py

让我来解释一下这些文件都是做什么用的:


文件名

解释

__init__.py

Django的项目(project)实际上是Python的一个(package),所以这个文件告诉Python,将这个项目当作来对待。

Python中的,是包含了一些列Python模块文件的文件夹,这种方式可以有效的避免名称的冲突

manage.py

这是另一个有用的工具脚本文件,你可以把它想象成基于你项目的django-adming.py文件,实际上这个两个文件在Django内部是共享了后台的代码。

settings.py

这是Django项目的主要配置文件,你可以在这里设置很多选项,比如指定数据库、设置站点语言、打开或关闭Django内建功能等等。我们会在后面的章节中注意介绍这个文件的用处,不过本章我们只谈谈如何通过这个文件来设置数据库。

url.py

这是Django项目的另一个配置文件,你可以把它看成是URL和Python函数之间的映射关系的定义。这个文件是Django中提供的强大功能之一,我们将在后面的章节中介绍如何使用这个文件。


我们在写程序的时候这个文件夹相当于我们程序的一个容器,所有代码都包含在这里。现在让我们来看看如何配置Django的数据库。

数据库配置

现在我们开始了真正的Django编码工作了。那么我们应该选一个代码编辑器,市面上有很多可选的代码编辑工具,有些人喜欢用功能完善的集成开发工具,有的人喜欢喜用简单快速的文本编辑器,如果你现在已经有一个习惯使用的代码编辑器,我建议你继续使用下去,如果还没有这里有几个不错的工具:

  • Scite:这是一个功能强大的编辑器,它是开源软件可以运行在任何的主流平台上,支持语法高亮和自动补全功能。你可以在http://www.scintilla.org/SciTE.html 下载到。
  • EditPlus:这是另一个功能强大的编辑器,它是用于Windows平台,你可以通过安装插件的方式来提供Python语法的支持。http://www.editplus.com/ 可以下载到。
  • TextMate:这是一个在MacOS上广泛使用的文本编辑器,它提供了丰富的对Django的支持。TextMate不是免费的,但是你可以在这个http://macromates.com/下载到30天的试用版本。
  • Eclipse + PyDev:这是Eclipse集成开发环境的Python版本,它提供了语法高亮,自动补全已经版本控制等一系列功能。如果你选择使用IDE来开发Django,向你推荐这个功能。有关下载和安装PyDev的信息可以在http://pydev.sourceforge.net/ 找到。

现在编辑器已经准备好了,让我们贷款settings.py文件看看里边包含些什么内容:

# Django settings for django_bookmarks project.

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
# ('Your Name', 'your_email@domain.com'),
)

MANAGERS = ADMINS

DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = '' # Or path to database file if using sqlite3.
DATABASE_USER = '' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.

。。。。。

你可能已经注意到了,这个文件中包含了一系列的变量,没个变量都有相应的解释,说明这个变量的含义和用处。

我们现在关注的是如何配置数据库,就像我们前面提到的那样Django支持很多数据库引擎,所以首先我们要告诉Django我们要使用那种数据库。这由DATABASE_ENGINE变量来控制,刚才说过我们准备使用SQLite,所以把这个变量的值设置为“sqlite3”。然后就是定义数据库的名称。将DATABASE_NAME变量赋值为“bookmarksdb”。我们现在使用的是SQLite数据库所以这些就足够了。如果使用的是其他的数据库服务器,那么你还需要定义诸如:数据库用户名、口令、数据库服务器地址和端口号。通过以上设置,这部分看起来应该是这样:

DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'bookmarksdb'
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''

接下来要做的事就是告诉Django,我们的数据库已经设置好了现在可以创建数据库和必要的表。尽管现在我们还没有定义任何表,但是Django的一些内建功能需要在数据库中创建一些附加表。创建这些表的过程非常简单,只要执行下面的命令就可以了:

$ python manage.py syncdb

执行上面的命令后,你应该看到一些列输出消息,你可以看到Django自动创建了一些表,并且询问你是否创建一个超级用户。我们应该创建一个超级用于以便可以访问我的刚刚创建的应用程序。如果一切正常我们现在可以启动我们的web服务器了。

启动web服务器

我们前面曾经说过,Django内置了一个开发用的web服务器,这是一个轻量级的服务器,专门为Django而预置。重要的一点是,每次你更改Django代码的时候这个服务器都会自动重新启动。启动服务器的方法很简单,只要运行下面的命令就可以了。

$ python manage.py runserver

然后打开你的浏览器输入地址http://127.0.0.1:8000/你将看到下面的页面:


恭喜你,第一个Django应用程序已经完成了,在接下来的一章中我们将基于这个空的应用程序逐步丰富他的内容,同时进一步介绍Django。

本章总结

在这一章我们学习了如何搭建开发运行环境,并创建了第一个应用程序,学习了如何运行Django的web服务器,现在所以的准备工作都做好了。

下面是一个本章中我们学到的Django功能的总结:

  • 你可以从http://www.djangoproject.com/下载Django,它是由Python写成的,可以运行于所有主流的操作系统。
  • 通过下面的命令创建一个显得Django应用程序,
$ django-admin.py startproject <project-name>
  • 通过下面的命令创建数据库表
$ python manage.py syncdb
  • 通过下面的命令启动web服务器
$ python manage.py runserver
  • Django应用程序的配置文件是settings.py,它是一个Python源文件,大部分Django的配置内容都在这里完成。

下一章我们将逐步丰富这个应用程序,并介绍Django中主要的组件和功能。

No comments: