Thewebframeworkforperfectionistswithdeadlines.
从哪里获得帮助:
如果你在阅读本教程的过程中有任何疑问,可以前往FAQ的:doc:GettingHelp的版块。
现在,打开mysite/settings.py。这是个包含了Django项目设置的Python模块。
通常,这个配置文件使用SQLite作为默认数据库。如果你不熟悉数据库,或者只是想尝试下Django,这是最简单的选择。Python内置SQLite,所以你无需安装额外东西来使用它。当你开始一个真正的项目时,你可能更倾向使用一个更具扩展性的数据库,例如PostgreSQL,避免中途切换数据库这个令人头疼的问题。
SQLite以外的其它数据库
如果你使用了SQLite以外的数据库,请确认在使用前已经创建了数据库。你可以通过在你的数据库交互式命令行中使用"CREATEDATABASEdatabase_name;"命令来完成这件事。
如果你使用SQLite,那么你不需要在使用前做任何事——数据库会在需要的时候自动创建。
这些应用被默认启用是为了给常规项目提供方便。
默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:
写给极简主义者
在Django里写一个数据库驱动的Web应用的第一步是定义模型-也就是数据库结构设计和附加的其它元数据。
设计哲学
来介绍一下迁移-举个例子,不像RubyOnRails,Django的迁移代码是由你的模型文件自动生成的,它本质上是个历史记录,Django可以用它来进行数据库的滚动更新,通过这种方式使其能够和当前的模型匹配。
这些概念可以通过一个Python类来描述。按照下面的例子来编辑polls/models.py文件:
上面的一小段用于创建模型的代码给了Django很多信息,通过这些信息,Django可以:
但是首先得把polls应用安装到我们的项目里。
Django应用是“可插拔”的。你可以在多个项目中使用同一个应用。除此之外,你还可以发布自己的应用,因为它们并不会被绑定到当前安装的Django上。
$pythonmanage.pymakemigrationspolls...\>pymanage.pymakemigrationspolls你将会看到类似于下面这样的输出:
迁移是Django对于模型定义(也就是你的数据库结构)的变化的储存形式-它们其实也只是一些你磁盘上的文件。如果你想的话,你可以阅读一下你模型的迁移数据,它被储存在polls/migrations/0001_initial.py里。别担心,你不需要每次都阅读迁移文件,但是它们被设计成人类可读的形式,这是为了便于你手动调整Django的修改方式。
$pythonmanage.pysqlmigratepolls0001...\>pymanage.pysqlmigratepolls0001你将会看到类似下面这样的输出(我把输出重组成了人类可读的格式):
BEGIN;----CreatemodelQuestion--CREATETABLE"polls_question"("id"serialNOTNULLPRIMARYKEY,"question_text"varchar(200)NOTNULL,"pub_date"timestampwithtimezoneNOTNULL);----CreatemodelChoice--CREATETABLE"polls_choice"("id"serialNOTNULLPRIMARYKEY,"choice_text"varchar(200)NOTNULL,"votes"integerNOTNULL,"question_id"integerNOTNULL);ALTERTABLE"polls_choice"ADDCONSTRAINT"polls_choice_question_id_c5b4b260_fk_polls_question_id"FOREIGNKEY("question_id")REFERENCES"polls_question"("id")DEFERRABLEINITIALLYDEFERRED;CREATEINDEX"polls_choice_question_id_c5b4b260"ON"polls_choice"("question_id");COMMIT;请注意以下几点:
迁移是非常强大的功能,它能让你在开发过程中持续的改变数据库结构而不需要重新删除和创建表-它专注于使数据库平滑升级而不会丢失数据。我们会在后面的教程中更加深入的学习这部分内容,现在,你只需要记住,改变模型需要这三步:
数据库迁移被分解成生成和应用两个命令是为了让你能够在代码控制系统上提交迁移数据并使其能在多个应用里使用;这不仅仅会让开发更加简单,也给别的开发者和生产环境中的使用带来方便。
现在让我们进入交互式Python命令行,尝试一下Django为你创建的各种API。通过以下命令打开Python命令行:
$pythonmanage.pyshell...\>pymanage.pyshell我们使用这个命令而不是简单的使用"Python"是因为manage.py会设置DJANGO_SETTINGS_MODULE环境变量,这个变量会让Django根据mysite/settings.py文件来设置Python包的导入路径。
让我们再为此模型添加一个自定义方法:
保存文件然后通过pythonmanage.pyshell命令再次打开Python交互式命令行:
为你的员工或客户生成一个用户添加,修改和删除内容的后台是一项缺乏创造性和乏味的工作。因此,Django全自动地根据模型创建后台界面。
Django产生于一个公众页面和内容发布者页面完全分离的新闻类站点的开发过程中。站点管理人员使用管理系统来添加新闻、事件和体育时讯等,这些添加的内容被显示在公众页面上。Django通过为站点管理人员创建统一的内容编辑界面解决了这个问题。
管理界面不是为了网站的访问者,而是为管理者准备的。
$pythonmanage.pycreatesuperuser...\>pymanage.pycreatesuperuser键入你想要使用的用户名,然后按下回车键:
Username:admin然后提示你输入想要使用的邮件地址:
Emailaddress:admin@example.com最后一步是输入密码。你会被要求输入两次密码,第二次的目的是为了确认第一次输入的确实是你想要的密码。
如果开发服务器未启动,用以下命令启动它:
但是我们的投票应用在哪呢?它没在索引页面里显示。
只需要再做一件事:我们得告诉管理员,问题Question对象需要一个后台接口。打开polls/admin.py文件,把它编辑成下面这样:
点击"Questions"。现在看到是问题"Questions"对象的列表"changelist"。这个界面会显示所有数据库里的问题Question对象,你可以选择一个来修改。这里现在有我们在上一部分中创建的“What'sup”问题。