IIssNan
|
2.0/chapter04/#27 |
2009-11-06 17:25:01
|
让我们从一个简单的例子模板开始。
|
|
IIssNan
|
2.0/chapter04/#25 |
2009-11-06 17:24:26
|
模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档。
|
|
IIssNan
|
2.0/chapter04/#24 |
2009-11-06 17:23:04
|
模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签)。
|
|
IIssNan
|
2.0/chapter04/#23 |
2009-11-06 17:22:19
|
模板是一个文本,用于分离文档的表现形式和内容。
|
|
IIssNan
|
2.0/chapter04/#32 |
2009-11-06 16:49:11
|
该模板是一段添加了些许变量和模板标签的基础 HTML 。
|
|
IIssNan
|
2.0/chapter05/#512 |
2009-11-06 15:34:56
|
一个很好的起点在:http://www.joelonsoftware.com/articles/Unicode.html。
|
|
IIssNan
|
2.0/chapter05/#511 |
2009-11-06 15:34:01
|
注意,我们这里只是对Unicode对象进行非常浅显的概述,若要深入了解你可能需要查阅相关的资料。
|
|
IIssNan
|
2.0/chapter05/#509 |
2009-11-06 15:31:06
|
通常,我们不必担心编码是否正确,后台会处理的很好。
|
|
IIssNan
|
2.0/chapter05/#740 |
2009-11-06 15:30:09
|
如果只需要删除部分的数据,就不需要调用all()方法。再看一下之前的例子:
|
|
IIssNan
|
2.0/chapter05/#737 |
2009-11-06 15:28:58
|
而一旦使用all()方法,所有数据将会被删除:
|
|
IIssNan
|
2.0/chapter05/#734 |
2009-11-06 15:28:18
|
比如,下面的操作将会出错:
|
|
IIssNan
|
2.0/chapter05/#733 |
2009-11-06 15:27:52
|
为了预防误删除掉某一个表内的所有数据,Django要求若要删除表内所有数据时要使用all()来明确指定。
|
|
IIssNan
|
2.0/chapter05/#732 |
2009-11-06 15:25:41
|
删除数据时要谨慎!
|
|
IIssNan
|
2.0/chapter05/#729 |
2009-11-06 15:23:18
|
同样我们可以在结果集上调用delete()方法同时删除多条记录。这一点与我们上一小节提到的update()方法相似:
|
|
IIssNan
|
2.0/chapter05/#753 |
2009-11-06 15:20:32
|
下一章将介绍解决手工录入问题的方法——Django管理界面。
|
|
IIssNan
|
2.0/chapter05/#755 |
2009-11-06 15:18:39
|
the GNU Free Document License
|
|
IIssNan
|
2.0/chapter05/#756 |
2009-11-06 15:18:14
|
Hosting graciously provided by
|
|
IIssNan
|
2.0/chapter05/#722 |
2009-11-06 15:17:57
|
在上面的例子中,这个值是2。
|
|
IIssNan
|
2.0/chapter05/#721 |
2009-11-06 15:17:35
|
update()方法会返回一个整型数值,表示受影响的记录条数。
|
|
IIssNan
|
2.0/chapter05/#718 |
2009-11-06 15:15:57
|
以下示例演示如何将Publisher的country字段值为'U.S.A'更改为'USA':
|
|
IIssNan
|
2.0/chapter05/#717 |
2009-11-06 15:14:08
|
update()方法对于任何结果集(QuerySet)均有效,这意味着你可以同时更新多条记录。
|
|
IIssNan
|
2.0/chapter05/#714 |
2009-11-06 15:12:14
|
与之等同的SQL语句变得更高效,并且不会引起竞态条件。
|
|
IIssNan
|
2.0/chapter05/#711 |
2009-11-06 15:10:46
|
示例如下:
|
|
IIssNan
|
2.0/chapter05/#710 |
2009-11-06 15:10:24
|
更改某一指定的列,我们可以调用结果集(QuerySet)对象的update()方法:
|
|
IIssNan
|
2.0/chapter05/#709 |
2009-11-06 15:08:33
|
若name以外的列有可能会被其他的进程所改动的情况下,只更改name列显然是更加明智的。
|
|
IIssNan
|
2.0/chapter05/#708 |
2009-11-06 15:04:57
|
在这个例子里我们可以看到Django的save()方法更新了不仅仅是name列的值,还有更新了所有的列。
|
|
IIssNan
|
2.0/chapter05/#706 |
2009-11-06 15:02:14
|
(注意在这里我们假设Apress的ID为52)
|
|
IIssNan
|
2.0/chapter05/#703 |
2009-11-06 15:01:34
|
这等同于如下SQL语句:
|
|
IIssNan
|
2.0/chapter05/#700 |
2009-11-06 15:01:04
|
例如说我们现在想要将Apress Publisher的名称由原来的"Apress"更改为"Apress Publishing"。若使用save()方法,如:
|
|
IIssNan
|
2.0/chapter05/#698 |
2009-11-06 14:58:22
|
而某些情况下,我们只需要更新行里的某几列。
|
|
IIssNan
|
2.0/chapter05/#697 |
2009-11-06 14:57:48
|
在“插入和更新数据”小节中,我们有提到模型的save()方法,这个方法会更新一行里的所有列。
|
|
IIssNan
|
2.0/chapter05/#695 |
2009-11-06 14:54:03
|
更新多个对象
|
|
IIssNan
|
2.0/chapter05/#692 |
2009-11-06 14:53:32
|
比如,稍微修改 order_by() 语句来实现:
|
|
IIssNan
|
2.0/chapter05/#691 |
2009-11-06 14:52:04
|
虽然不支持负索引,但是我们可以使用其他的方法。
|
|
IIssNan
|
2.0/chapter05/#688 |
2009-11-06 14:50:46
|
注意,不支持Python的负索引(negative slicing):
|
|
IIssNan
|
2.0/chapter05/#688 |
2009-11-06 14:50:29
|
注意,Python的负索引(negative slicing)不被支持:
|
|
IIssNan
|
2.0/chapter05/#685 |
2009-11-06 14:49:14
|
这个例子返回两个对象,等同于以下的SQL语句:
|
|
IIssNan
|
2.0/chapter05/#548 |
2009-11-06 14:48:03
|
参阅后面的“更新多个对象”小节查看以下的查询与“更新多个对象”使用的方法之间的不同。
|
|
IIssNan
|
2.0/chapter05/#521 |
2009-11-06 14:39:40
|
<literal>__unicode__()</literal> 就是一个例子来演示模型知道怎么显示它们自己。
|
|
IIssNan
|
2.0/chapter05/#519 |
2009-11-06 14:38:35
|
最后, <literal>__unicode()__</literal> 也是一个很好的例子来演示我们怎么添加 <emphasis>行为</emphasis> 到模型里。
|
|
IIssNan
|
2.0/chapter05/#517 |
2009-11-06 14:38:09
|
请确保你的每一个模型里都包含 <literal>__unicode__()</literal> 方法,这不只是为了交互时方便,也是因为 Django会在其他一些地方用 <literal>__unicode__()</literal> 来显示对象。
|
|
luwenhua@126.com
|
2.0/chapter02/#87 |
2009-11-06 11:03:17
|
因为很多django的开发者在正式网站上就是用的trunk版本,他们会保证trunk版本的稳定性。
|
|
huozhe3136@hotmail.com
|
2.0/chapter01/#37 |
2009-11-06 10:49:33
|
在遍历这些书的同时,生成一个书名的HTML列表项。
|
|
huozhe3136@hotmail.com
|
2.0/chapter01/#37 |
2009-11-06 10:47:35
|
遍历这些书,同时生成一个书名的HTML列表项。
|
|
huozhe3136@hotmail.com
|
2.0/chapter01/#37 |
2009-11-06 10:46:50
|
遍历这些书,同时生成一个书名的HTML列表。
|
|
|
2.0/chapter03/#489 |
2009-11-06 09:56:24
|
unicode" .
|
|
|
2.0/chapter03/#489 |
2009-11-06 09:56:09
|
unicode" .
|
|
IIssNan
|
2.0/chapter03/#249 |
2009-11-06 09:50:09
|
正如我们在第一个视图例子里面看到的,一个视图函数必须返回一个HttpResponse对象。 一旦视图函数执行完成,Django将完成剩余的工作,并转换Python对象到一个合适的带有HTTP头和body的Web Response(例如,网页内容)。
|
|
IIssNan
|
2.0/chapter03/#247 |
2009-11-06 09:48:00
|
(稍后再给出 <literal>HttpRequest</literal> 的更多信息)
|
|
IIssNan
|
2.0/chapter03/#246 |
2009-11-06 09:47:49
|
当找到这个匹配 的URLpatterns就调用相关联的view函数,并把 <literal>HttpRequest</literal> 对象作为第一个参数
|
|