写你的第一个Django应用|第一部分•原文地址:•Creatingaproject•Thedevelopmentserver•Databasesetup•Creatingmodels•Activatingmodels•PlayingwiththeAPI从示例学习。开始之前,请确保Django已经安装完毕。先运行Python,若正常,再输入importdjango。如果运行无误,则说明Django已成功安装。$pythonPython2.5.2(r252:60911,Feb222008,07:57:53)[GCC4.0.1(AppleComputer,Inc.build5363)]ondarwinTypehelp,copyright,creditsorlicenseformoreinformation.importdjango新建项目(Project)你可以将你的project放置在任何目录下,从终端中,用cd命令进入理想的目录,然后运行命令,django-admin.pystartprojectmysite,这将创建一个名为mysite的项目,在其文件夹中,还自动生成了4个文件:•init.py•manage.py•settings.py•urls.py这些文件的作用是:•init.py:这是一个空文件,指示这个目录是Python的一个package。•manage.py:一个命令行工具,可以用来对Django项目进行各种操作。•settings.py:Django项目的设置文件。•urls.py:Django项目URL声明文件;网站的目录。运行本地服务器Django本身包含一个用纯Python语言编写的轻量级服务器,便于快速开发你的项目,而不用花费过多精力设置服务器,比如Apache,除非你准备好正式发布网站。在mysite目录中,如果你紧跟着教程到此,可以直接运行命令pythonmanage.pyrunserver,启动服务器。你可以看到屏幕出现:Validatingmodels...0errorsfound.Djangoversion1.0,usingsettings'mysite.settings'Developmentserverisrunningat此文字说明Django服务器已启动,可以用浏览器访问,如果一切正常,你将会看到Django的起始页。Itworked!设置数据库接下来,编辑settings.py文件。这个文件是一个普通的Python模块,包含模块级别的变量来规定Django设置。现在我们修改关于数据库的设置连接参数,去吻合你将使用的数据库。•DATABASE_ENGINE--数据库引擎,常见的有:postgresql_psycopg2、mysql或sqlite3。还可选择postgresql或oracle。•DATABASE_NAME--数据库名称。若使用SQLite3,数据库名称是数据库文件名和其保存的绝对路径。•DATABASE_USER--SQLite3不用修改,为空。•DATABASE_PASSWORD--默认为localhost。SQLite3不用修改。•DATABASE_HOST--默认为default。SQLite3不用修改。使用SQLite数据库最简单,设置DATABASE_ENGINE为sqlite3.若使用其他类型的数据库,在此应通过命令创建新的数据库。当你编辑settings.py文件时,顺便注意一下文件底部INSTALLED_APPS设置,默认包含如下apps:•django.contrib.auth•django.contrib.contenttypes•django.contrib.sessions•django.contrib.sites这些是Django项目默认包含的应用,比如认证系统、内容类型框架、session框架、多网站管理的应用,这些app独立存在,可以根据需要保留或删除,也可应用在其他项目中。每个app至少对应一个数据库表,我们在mysite目录中运行如下命令来生成数据库表:pythonmanage.pysyncdbsyncdb会搜索INSTALLED_APPS中的所有app,生成必要的书库据表。你会看到提示询问是否要为认证系统创建一个超级用户,输入yes,根据提示完成。创建模型我们现在已经有了一个mysite的项目环境,接下来让我们做点事情。你在Django写的每个应用都包含一个Pythonpackage,以特定规则保存在你的Python目录中。Django通过一个工具来自动生成app应用的基本目录,所以你可以专心编写代码而不用担心如何创建目录。•??目(project)与应用(app)项目可以包含多个应用,一个应用可存在于多个项目中。应用,可以是blog系统,公共记录数据库,或是一个简单的投票系统等等。在这个教程中,我们将在mysite中创建简单的投票poll应用。结果这个应用被绑定在项目中,也就是通过mysite.polls引用投票应用。在后面的教程中,我们会讨论如何包装发布这个应用。为了创建名为polls的应用,确定在mysite的目录中,输入命令:pythonmanage.pystartapppolls这会创建一个名为polls的目录包含应用基本文件,其中包括:polls/__init__.pymodels.pyviews.py我们通过修改models.py文件,来新建两个模型:Poll和Choice。模型Poll包含问题和发布时间。模型Choice包含选择文本和投票数;且每个选择被指定到一个投票上。事实上,即新建两个Python类。修改models.py文件为如下代码所示:fromdjango.dbimportmodelsclassPoll(models.Model):question=models.CharField(max_length=200)pub_date=models.DateTimeField('datepublished')classChoice(models.Model):poll=models.ForeignKey(Poll)choice=models.CharField(max_length=200)votes=models.IntegerField()注:在Django0.96之前的版本中,max_length应改为maxlength。代码很直观。每个模型即是一个类,是django.db.models.Model的子类。每个模型有不同数量的类变量,每个变量对应一个数据库字段。每个字段是Field类的一个实例,比如,CharField是字符字段,而DateTimeField是日期时间字段。这会告诉Django每个字段的类型。每个字段实例的名称,比如question和pub_date,也将是数据库中列的名称。一些字段类需要参数。CharField,比如,就需要参数max_length。这不仅应用在数据库表中,也是一个输入数据时验证条件。最后,ForeignKey表示数据库表的关系。这告诉Django每个Choice对应一个Poll。Django支持所有普遍的数据库关系:多对一、多对多和一对一关系。激活模型这么简短的模型代码告诉Django很多信息。有了它,Django可以:•为这个应用创建数据库表;•创建Python数据库操作的API,来调用Poll和Choice对象。但是首先,我们需要告诉项目polls应用已被安装。•哲学Django的app是可插拔的:你可以将同一app应用在多个项目中,你也可以发布app为他人使用,因为app不必绑定至已有Django安装。再次编辑settings.py文件,在INSTALLED_APPS中添加mysite.polls,如下所示:INSTALLED_APPS=('django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.sites','mysite.polls')现在Django已经知道mysite包含了polls应用。让我们运行另一个命令:pythonmanage.pysqlpolls你应该会看到如下的代码(也就是polls对应的SQL语句):BEGIN;CREATETABLEpolls_poll(idserialNOTNULLPRIMARYKEY,questionvarchar(200)NOTNULL,pub_datetimestampwithtimezoneNOTNULL);CREATETABLEpolls_choice(idserialNOTNULLPRIMARYKEY,poll_idintegerNOTNULLREFERENCESpolls_poll(id),choicevarchar(200)NOTNULL,votesintegerNOTNULL);COMMIT;再次运行syncdb在数据库中创建模型表。pythonmanage.pysyncdb命令会搜索INSTALLED_APPS中还未加入数据库的应用,并生成对应的数据库表。屏幕应会显示:Creatingtablepolls_pollCreatingtablepolls_choiceInstallingindexforpolls.Choicemodel写你的第一个Django应用|第二部分•原文地址:•启用管理后台•运行开发时用服务器•登录管理后台•添加Poll模型至管理界面•探索管理后台•自定义管理表格•添加相关对象第二部分紧接第一部分,继续完成投票应用,并关注Django的自动化管理后台。启用管理后台Django管理后台默认不启用。启用管理后台,有三个步骤:1.添加django.contrib.admin到你的INSTALLED_APPS设置中。2.运行pythonmanage.pysyncdb命令。因为你在INSTALLED_APPS中添加了新内容,所以数据库需要更新。3.编辑mystie/urls.py文件。取消如下三行前面的#号。fromdjango.contribimportadminadmin.autodiscover()(r'^admin/(.*)',admin.site.root),运行开发时用服务器现在让我们运行服务器,来探索一下管理后台界面。还记得吗?在第一部分我们说过,运行服务器我们在终端输入如下命令:pythonmanage.pyrunserver好的,现在开启浏览器,在地址栏中输入本地域名,比如:现在你应该可以看到管理后台的登录界面:登录管理后台现在,试着登录。你已经在教程第一部分时创建过一个超级用户,记得吗?登录后,你应该会看到如下界面:你可以看到一些可编辑的内容,包括Groups,Users和Sites。这是默认存在的Django核心特性。添加Poll模型至管理界面还记得刚刚创建的Poll模型吧,这一步我们把它加入管理界面中。也就一件事要做:我们需要告诉管理后台Poll模型拥有管理界面。修改mysite/polls/models.py文件,在文件最后添加如下代码:frommysite.polls.modelsimportPollfromdjango.contribimportadminadmin.site.register(Poll)马上刷新管理页面,就可以看到变化,无需重启服务器,服务器会自动重新载入你的项目,所以任何改动都会立即