ySJ
|
2.0/chapter13/#397 |
2010-04-21 15:33:49
|
确定您已经安装了 sites 框架 (参见第16章).
|
|
ySJ
|
2.0/chapter13/#395 |
2010-04-21 15:32:30
|
默认情况下它在那里,所以,你不需要做什么,除非你更改了那个设置。
|
|
ySJ
|
2.0/chapter13/#369 |
2010-04-21 15:16:54
|
下面是一个完整的例子:
|
|
ySJ
|
2.0/chapter13/#368 |
2010-04-21 15:16:46
|
然后更新URLconf内容。
|
|
ySJ
|
2.0/chapter13/#367 |
2010-04-21 15:16:14
|
只需创建一个你的 <literal>feed</literal> 类的子类,修改 <literal>feed_type</literal>。
|
|
ySJ
|
2.0/chapter13/#361 |
2010-04-21 15:15:18
|
聚合框架会自动完成这项工作。
|
|
ySJ
|
2.0/chapter13/#358 |
2010-04-21 15:14:21
|
(参阅第16章以获得更多有关<literal>SITE_ID</literal>和框架的信息。)
|
|
ySJ
|
2.0/chapter13/#357 |
2010-04-21 15:12:02
|
<literal>link</literal> 方法/属性可以返回绝对URL的形式(例如, <literal>"/blog/"</literal> )或者指定协议和域名的URL的形式返回(例如 <literal>"http://www.example.com/blog/"</literal> )。如果 <literal>link</literal> 没有返回域名,聚合框架会根据 <literal>SITE_ID</literal> 设置,自动的插入当前站点的域信息。
|
|
ySJ
|
2.0/chapter13/#353 |
2010-04-21 15:09:36
|
它直接来自于您的 LANGUAGE_CODE 设置。
|
|
ySJ
|
2.0/chapter13/#352 |
2010-04-21 15:09:26
|
聚合框架自动创建的Feed包含适当的 <literal></literal> 标签(RSS 2.0) 或 <literal>xml:lang</literal> 属性(Atom)。
|
|
ySJ
|
2.0/chapter13/#352 |
2010-04-21 15:06:50
|
聚合框架自动创建的Feed包含适当的 <literal></literal> 标签(RSS 2.0) 或 <literal>xml:lang</literal> 属性(Atom)。它直接来自于您的 LANGUAGE_CODE 设置。
|
|
ySJ
|
2.0/chapter13/#342 |
2010-04-21 15:00:18
|
150
|
|
ySJ
|
2.0/chapter13/#337 |
2010-04-21 14:59:45
|
RSS 0.91
|
|
ySJ
|
2.0/chapter13/#335 |
2010-04-21 14:59:33
|
django.utils.feedgenerator.RssUserland091Feed
|
|
ySJ
|
2.0/chapter13/#341 |
2010-04-21 14:58:33
|
Atom 1.0
|
|
ySJ
|
2.0/chapter13/#339 |
2010-04-21 14:58:21
|
django.utils.feedgenerator.Atom1Feed
|
|
ySJ
|
2.0/chapter13/#333 |
2010-04-21 14:58:10
|
RSS 2.01 (默认的)
|
|
ySJ
|
2.0/chapter13/#331 |
2010-04-21 14:57:55
|
django.utils.feedgenerator.Rss201rev2Feed
|
|
ySJ
|
2.0/chapter13/#317 |
2010-04-21 14:57:04
|
要改变这样的情况需要在<literal>Feed</literal>类中添加一个<literal>feed_type</literal>属性。
|
|
ySJ
|
2.0/chapter13/#316 |
2010-04-21 14:56:35
|
默认情况下, 聚合框架生成RSS 2.0。
|
|
ySJ
|
2.0/chapter13/#309 |
2010-04-21 14:55:38
|
最后,值得注意的是,这个例子中的 <literal>items()</literal>也使用 <literal>obj</literal> 参数。
|
|
ySJ
|
2.0/chapter13/#303 |
2010-04-21 14:54:49
|
试图调用一个函数,并且以 <literal>get_object()</literal> 返回的对象<literal>obj</literal>作为参数。
|
|
ySJ
|
2.0/chapter13/#303 |
2010-04-21 14:54:02
|
试图调用一个函数,并且以 <literal>get_object()</literal> 返回的对象作为参数。
|
|
ySJ
|
2.0/chapter13/#297 |
2010-04-21 14:52:09
|
函数在出错时抛出 <literal>Tag.DoesNotExist</literal> 异常,而 <literal>Tag.DoesNotExist</literal> 是 <literal>ObjectDoesNotExist</literal> 异常的一个子类。在<literal>get_object()</literal>里抛出<literal>ObjectDoesNotExist</literal>会通知Django显示404错误页面。
|
|
ySJ
|
2.0/chapter13/#296 |
2010-04-21 14:50:44
|
在 <literal>Tag.objects.get()</literal> 调用中没有出现 <literal>try</literal>和<literal>except</literal> 代码块,因为没有这个必要。
|
|
ySJ
|
2.0/chapter13/#296 |
2010-04-21 14:48:30
|
在 <literal>Beat.objects.get()</literal> 调用中没有出现 <literal>try</literal> /<literal>except</literal> 代码块,因为没有这个必要。
|
|
ySJ
|
2.0/chapter13/#295 |
2010-04-21 14:47:50
|
在这个例子中,使用Django的数据库API来取回<literal>Tag</literal>。注意如果参数不合法<literal>get_objext()</literal>应该抛出<literal>django.core.exceptions.ObjectDoesNotExist</literal>。
|
|
ySJ
|
2.0/chapter13/#291 |
2010-04-21 14:45:15
|
在这个例子中,添加的信息是 <literal>['python']</literal> 。对于 <literal>/feeds/tags/python/django/</literal> 的一个URL请求, 这些信息就是 <literal>['python', 'django']</literal> 。
|
|
ySJ
|
2.0/chapter13/#288 |
2010-04-21 14:44:31
|
框架获得了URL <literal>/feeds/tags/python/</literal> 并且注意到URL中的slug部分后面含有更多的信息。
|
|
ySJ
|
2.0/chapter13/#286 |
2010-04-21 14:44:11
|
以下是RSS框架的基本算法,我们假设通过URL <literal>/feeds/tags/python/</literal> 来访问这个类:
|
|
ySJ
|
2.0/chapter13/#283 |
2010-04-21 14:40:37
|
下面是拥有特定tag的feed:
|
|
ySJ
|
2.0/chapter13/#283 |
2010-04-21 14:40:24
|
下面是拥有特定tag的feeds:
|
|
ySJ
|
2.0/chapter13/#280 |
2010-04-21 14:38:08
|
不一样的的那一部分是 <literal>"tags"</literal>。聚合框架检查<literal>'python'</literal>和<literal>'cats'</literal>之后的URL参数,你可以通知框架这个参数的意义以及它如何影响feed中发布的条目。
|
|
ySJ
|
2.0/chapter13/#276 |
2010-04-21 14:27:33
|
<literal>http://example.com/feeds/tags/python/</literal>: 返回tag为Python的最新条目。
|
|
ySJ
|
2.0/chapter13/#278 |
2010-04-21 14:27:09
|
<literal>http://example.com/feeds/tags/cats/</literal>: 返回tag为猫的最新条目。
|
|
ySJ
|
2.0/chapter13/#276 |
2010-04-21 14:26:08
|
<literal>http://example.com/feeds/tags/python/</literal>: 使用Python返回最新的条目tag。
|
|
ySJ
|
2.0/chapter13/#276 |
2010-04-21 14:25:47
|
<literal>http://example.com/feeds/tags/python/</literal>: 返回最新的条目tag。
|
|
ySJ
|
2.0/chapter13/#274 |
2010-04-21 14:24:02
|
你的feed可以使用这样的URL:
|
|
ySJ
|
2.0/chapter13/#270 |
2010-04-21 14:23:02
|
如果为每一个单独的tag建立一个 <literal>Feed</literal> 类就显得很不明智。这违背了“不做重复工作”的原则,并且带来了代码耦合。
|
|
ySJ
|
2.0/chapter13/#269 |
2010-04-21 14:21:38
|
例如,假设你的blog提供一个返回所有你使用过的tag的RSS feed。
|
|
ySJ
|
2.0/chapter13/#260 |
2010-04-21 14:19:36
|
然后 <literal>latest_description.html</literal> 包含:
|
|
ySJ
|
2.0/chapter13/#246 |
2010-04-21 14:18:20
|
(对于模型对象,就是指<literal>__unicode__()</literal>方法。
|
|
ySJ
|
2.0/chapter13/#236 |
2010-04-21 14:15:27
|
注意<literal>.html</literal>后缀是必须的。
|
|
ySJ
|
2.0/chapter13/#235 |
2010-04-21 14:15:08
|
如果要指定 <literal></literal> 和 <literal></literal> ,可以建立一个Django模板,名字叫 <literal>feeds/latest_title.html</literal> 和 <literal>feeds/latest_description.html</literal> ,后者是URLConf里为对应feed指定的 <literal>slug</literal> 。
|
|
ySJ
|
2.0/chapter13/#233 |
2010-04-21 14:13:56
|
在一个RSS feed里,每个(item)有一个(title),(link)和(description),我们需要告诉框架 把数据放到这些元素中。
|
|
ySJ
|
2.0/chapter13/#232 |
2010-04-21 14:13:33
|
还有一个步骤。
|
|
ySJ
|
2.0/chapter13/#230 |
2010-04-21 14:13:03
|
虽然例子里用Django database API返回的<literal>Entry</literal>对象,<literal>items()</literal>不一定必须返回 model的实例。
|
|
ySJ
|
2.0/chapter13/#229 |
2010-04-21 14:11:37
|
<literal>items()</literal> 是一个方法,返回一个用以包含在feed里的 <literal>item</literal> 元素里的列表。
|
|
ySJ
|
2.0/chapter13/#229 |
2010-04-21 14:11:19
|
<literal>items()</literal> 是一个方法,返回一个用以包含在feed里的 <literal></literal> 元素里的列表。
|
|
ySJ
|
2.0/chapter13/#225 |
2010-04-21 14:07:59
|
子类 <literal>django.contrib.syndication.feeds.Feed</literal>。
|
|