天天看點

Django 學習筆記(七)進階feed生成架構

Django 1.5 關于The syndication feed 架構的翻譯,水準有限,随意翻譯了下下

Django帶來了一個進階的聚合生成架構,它使得建立RSS和Atom feeds變得非常容易。

為建立任何聚合feed,你所要做的就是寫一個簡短的python類,當然你可以建立任意多的feed.

Django同時提供底層feed産生器的API,如果你想産生外部web的feeds或者在其他底層方法時,可以調用這個API

進階feed生成架構

Feed類提供了一個進階feed生成架構,通過編寫

要建立一個 sitemap,你隻需要寫一個 Sitemap 類然後配置你的URLconf指向它。

編寫一個Feed類并在URLConf中指向這個Feed類的執行個體,來建立feed.

Feed classes

Feed類是一個python類,是表示的一個聚合feed.一個feed可以簡單至(例如,一個 站點新聞feed,或者一個顯示最新blog文章的feed), 也可以更複雜的(例如,顯示指定類别的blog的顯示,當然此blog的類别選擇是可用的。 Feed classes的父類是django.contrib.syncdation.views.Feed,它們可以使用在你的代碼的任意位置。 Feed classes的執行個體是作為視圖被用在URLConf中 下面給出一個Feed的簡單例子

from django.contrib.syndication.views import Feed
from django.core.urlresolvers import reverse
from policebeat.models import NewsItem

class LatestEntriesFeed(Feed):
    title = "Police beat site news"
    link = "/sitenews/"
    description = "Updates on changes and additions to police beat central."

    def items(self):
        return NewsItem.objects.order_by('-pub_date')[:5]

    def item_title(self, item):
        return item.title

    def item_description(self, item):
        return item.description

    # item_link is only needed if NewsItem has no get_absolute_url method.
    def item_link(self, item):
        return reverse('news-item', args=[item.pk])      

它的URLConf如下所示:

from django.conf.urls import patterns
from myproject.feeds import LatestEntriesFeed

urlpatterns = patterns('',
    # ...
    (r'^latest/feed/$', LatestEntriesFeed()),
    # ...
)      

注解:

The Feed class的父類是django.contrib.syncdation.views.Feed

title,link以及description 分别對應标準RSS中的title,link以及description參數

items()

下面的翻譯接(八)吧,還沒翻譯出來