ySJ
|
2.0/chapter05/#23 |
2010-04-11 16:57:17
|
你也许能够跟上进度,并在上下文学习过程中掌握一些概念。)
|
|
ySJ
|
2.0/chapter05/#70 |
2010-04-12 09:15:45
|
比起告诉同事,“让我们采用抽象的数据存取方式,然后单独划分一层来显示数据,并且在中间加上一个控制它的层”,一个通用的说法会让你收益,你只需要说:“我们在这里使用MVC模式吧。”。
|
|
ySJ
|
2.0/chapter05/#79 |
2010-04-12 09:21:51
|
<emphasis>C</emphasis> ,根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当的 Python 函数。
|
|
ySJ
|
2.0/chapter05/#85 |
2010-04-12 09:24:11
|
如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
|
|
ySJ
|
2.0/chapter05/#77 |
2010-04-12 09:28:49
|
<emphasis>V</emphasis> ,选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理。
|
|
ySJ
|
2.0/chapter05/#97 |
2010-04-12 09:31:39
|
在 Django 对 MVC 的诠释中,视图用来描述要展现给用户的数据;不仅仅是数据看起来 <emphasis>怎么样</emphasis> ,而是要呈现 <emphasis>哪些</emphasis> 数据。
|
|
ySJ
|
2.0/chapter05/#97 |
2010-04-12 09:32:50
|
在 Django 对 MVC 的诠释中,视图用来描述要展现给用户的数据;不是数据 <emphasis>如何</emphasis>展现 ,而且展现 <emphasis>哪些</emphasis> 数据。
|
|
ySJ
|
2.0/chapter05/#106 |
2010-04-12 09:34:39
|
首先,我们需要做些初始配置;我们需要告诉Django使用什么数据库以及如何连接数据库。
|
|
ySJ
|
2.0/chapter05/#108 |
2010-04-12 09:37:06
|
我们假定你已经完成了数据库服务器的安装和激活,并且已经在其中创建了数据库(例如,用 <literal>CREATE DATABASE</literal> 语句)。
|
|
ySJ
|
2.0/chapter05/#128 |
2010-04-12 09:38:33
|
需要的适配器
|
|
ySJ
|
2.0/chapter05/#128 |
2010-04-12 09:41:36
|
所需适配器
|
|
ySJ
|
2.0/chapter05/#163 |
2010-04-12 09:42:37
|
如果你使用Linux,你的发布包管理系统会提供合适的软件包。
|
|
ySJ
|
2.0/chapter05/#163 |
2010-04-12 09:42:49
|
如果你使用Linux,你的发布包管理系统会提供合适的包。
|
|
ySJ
|
2.0/chapter05/#177 |
2010-04-12 09:45:50
|
在这个例子中,我们将SQLite数据库放在/home/django目录下,你可以选用任何方便的目录。
|
|
ySJ
|
2.0/chapter05/#177 |
2010-04-12 09:57:17
|
在这个例子中,我们将SQLite数据库放在/home/django目录下,你可以任意选用最合适你的目录。
|
|
ySJ
|
2.0/chapter05/#196 |
2010-04-12 10:00:39
|
(我们上一章提到过在,Django配置正确的前提下,<literal> manager.py shell</literal> 命令是启用Python交互解释器的一种方法。)
|
|
ySJ
|
2.0/chapter05/#196 |
2010-04-12 10:04:56
|
(我们上一章提到过在,<literal> manager.py shell</literal> 命令是以正确Django配置启用Python交互解释器的一种方法。
|
|
ySJ
|
2.0/chapter05/#197 |
2010-04-12 10:07:08
|
这个方法在这里是很有必要的,因为Django需要知道加载哪个配置文件来获取数据库连接信息。)
|
|
ySJ
|
2.0/chapter05/#216 |
2010-04-12 10:10:01
|
不要以空字符串配置<literal> DATABASE_ENGINE</literal> 的值。
|
|
ySJ
|
2.0/chapter05/#221 |
2010-04-12 10:10:58
|
使用<literal> python manager.py shell</literal> 命令启动交互解释器,不要以<literal> python</literal> 命令直接启动交互解释器。
|
|
ySJ
|
2.0/chapter05/#226 |
2010-04-12 10:13:30
|
未安装合适的数据库适配器 (例如, <literal>psycopg</literal> 或 <literal>MySQLdb</literal> )。Django并不自带适配器,所以你得自己下载安装。
|
|
ySJ
|
2.0/chapter05/#230 |
2010-04-12 10:14:58
|
把<literal>DATABASE_ENGINE</literal> 配置成前面提到的合法的数据库引擎。
|
|
ySJ
|
2.0/chapter05/#247 |
2010-04-12 10:22:45
|
你现在已经确认数据库连接正常工作了,让我们来创建一个 <emphasis>Django app</emphasis>-一个包含模型,视图和Django代码,并且形式为独立Python包的完整Django应用。
|
|
ySJ
|
2.0/chapter05/#250 |
2010-04-12 10:25:14
|
在第二章我们已经创建了 <emphasis>project</emphasis> , 那么 <emphasis>project</emphasis> 和 <emphasis>app</emphasis> 之间到底有什么不同呢?它们的区别就是一个是配置另一个是
|
|
ySJ
|
2.0/chapter05/#251 |
2010-04-12 10:25:24
|
代码:
|
|
ySJ
|
2.0/chapter05/#260 |
2010-04-12 10:29:05
|
app的一个关键点是它们是很容易移植到其他project和被多个project复用。
|
|
ySJ
|
2.0/chapter05/#263 |
2010-04-12 10:31:11
|
如果你只是建造一个简单的Web站点,那么可能你只需要一个app就可以了;
|
|
ySJ
|
2.0/chapter05/#264 |
2010-04-12 10:31:58
|
但如果是一个包含许多不相关的模块的复杂的网站,例如电子商务和社区之类的站点,那么你可能需要把这些模块划分成不同的app,以便以后复用。
|
|
ySJ
|
2.0/chapter05/#266 |
2010-04-12 10:34:13
|
不错,你可以不用创建app,这一点应经被我们之前编写的视图函数的例子证明了 。
|
|
ySJ
|
2.0/chapter05/#267 |
2010-04-12 10:35:24
|
在那些例子中,我们只是简单的创建了一个称为<literal>views.py</literal>的文件,编写了一些函数并在URLconf中设置了各个函数的映射。
|
|
ySJ
|
2.0/chapter05/#271 |
2010-04-12 10:36:03
|
如果你使用了Django的数据库层(模型),你 必须创建一个Django app。
|
|
ySJ
|
2.0/chapter05/#275 |
2010-04-12 10:36:36
|
在<literal> mysite</literal> 项目文件下输入下面的命令来创建<literal> books</literal> app:
|
|
ySJ
|
2.0/chapter05/#284 |
2010-04-12 10:37:43
|
使用你最喜欢的文本编辑器查看一下 <literal>models.py</literal> 和 <literal>views.py</literal> 文件的内容。
|
|
ySJ
|
2.0/chapter05/#285 |
2010-04-12 10:41:04
|
它们都是空的,除了 <literal>models.py</literal> 里有一个 import。这就是你Django app的基础。
|
|
ySJ
|
2.0/chapter05/#289 |
2010-04-12 10:41:35
|
我们早些时候谈到。MTV里的M代表模型
|
|
ySJ
|
2.0/chapter05/#289 |
2010-04-12 10:41:48
|
我们早些时候谈到。MTV里的M代表模型。
|
|
ySJ
|
2.0/chapter05/#290 |
2010-04-12 10:42:19
|
Django模型是用Python代码形式表述的数据在数据库中的定义。
|
|
ySJ
|
2.0/chapter05/#291 |
2010-04-12 10:43:25
|
对数据层来说它等同于 CREATE TABLE 语句,只不过执行的是Python代码而不是 SQL,而且还包含了比数据库字段定义更多的含义。
|
|
ySJ
|
2.0/chapter05/#292 |
2010-04-12 10:44:15
|
Django用模型在后台执行SQL代码并把结果用Python的数据结构来描述。
|
|
ySJ
|
2.0/chapter05/#293 |
2010-04-12 10:45:35
|
Django也使用模型来城乡SQL无法处理的高级概念。
|
|
ySJ
|
2.0/chapter05/#293 |
2010-04-12 10:45:51
|
Django也使用模型来呈现SQL无法处理的高级概念。
|
|
ySJ
|
2.0/chapter05/#300 |
2010-04-12 10:47:51
|
第一种方式是用Python明确地定义数据模型,第二种方式是通过自省来自动侦测识别数据模型。
|
|
ySJ
|
2.0/chapter05/#308 |
2010-04-12 10:52:30
|
尽可能的保持在单一的编程环境/思想状态下可以帮助你提高生产率。
|
|
ySJ
|
2.0/chapter05/#315 |
2010-04-12 10:54:39
|
例如,大多数数据库都没有专用的字段类型来描述Email地址、URL。
|
|
ySJ
|
2.0/chapter05/#317 |
2010-04-12 10:55:22
|
好处就是高级的数据类型带来更高的效率和更好的代码复用。
|
|
ySJ
|
2.0/chapter05/#320 |
2010-04-12 10:58:57
|
发布Web应用的时候,使用Python模块描述数据库结构信息可以避免为MySQL, PostgreSQL, and SQLite编写不同的<literal>CREATE TABLE</literal>。
|
|
ySJ
|
2.0/chapter05/#323 |
2010-04-12 11:03:02
|
如果你修改了一个Django模型, 你要自己来修改数据库来保证和模型同步。
|
|
ySJ
|
2.0/chapter05/#332 |
2010-04-12 11:04:53
|
在本章和后续章节里,我们把注意力放在一个基本的 书籍/作者/出版商 数据库结构上。
|
|
ySJ
|
2.0/chapter05/#350 |
2010-04-12 11:08:48
|
首先要注意的事是每个数据模型都是 <literal>django.db.models.Model</literal> 的子类。它的父类 Model 包含了所有必要的和数据库交互的方法,并提供了一个简洁漂亮的定义数据库字段的语法。
|
|
ySJ
|
2.0/chapter05/#351 |
2010-04-12 11:11:20
|
信不信由你,这些就是我们通过Django存取基本数据的所有代码。
|
|