当前位置: 首页 > 工具软件 > Feed Tools > 使用案例 >

django feed

蒋永宁
2023-12-01

先了解下Rss feed 的介绍及xml的格式 再开始django feed的学习。详见http://blog.xuite.net/tolarku/blog/11006241-RSS+feed+%E4%B9%8B+XML+%E6%A0%BC%E5%BC%8F

feed 是一个信息的聚合方式常见有rss和Atom 两种,类似于动态的书签.feed中包含了该网站,博客等的信息.当用户订阅该feed时,如果内容出现更新,feed也动态更新。用户就可以通过feed reader来获取该feed的更新情况。达到不刷新网站也可以了解最新动态的效果。


创建一个简单的feed:

from django.contrib.syndication.views import Feed
from django.core.urlresolvers import reverse
from chicagocrime.models import NewsItem #数据库

class LatestEntriesFeed(Feed):
    title = "Chicagocrime.org site news" #feed的标题
    link = "/sitenews/"#链接
    description = "Updates on changes and additions to chicagocrime.org."#描述

    def items(self):
        return NewsItem.objects.order_by('-pub_date')[:5] #返回前5个项目  按pub_date的逆序排列

    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])

用一个URL连接feed,将存在的feed对象放在你的URLconf中 如下:

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

urlpatterns = patterns('',
    # ...
    (r'^latest/feed/$', LatestEntriesFeed()),
    # ...
)
title,link,description 对应的是标准RSS中的<title>,<link>,<description>。

items()是返回一个用以包含在包含在feed的 <item> 元素里的 list

如果想建立Atom的话用subtitle属性代替description属性


如果要指定 <title> <description> ,可以建立一个Django模板名字叫 feeds/latest_title.html feeds/latest_description.html ,后者是URLConf里为对应feed指定的slug 。注意 .html 后缀是必须的。

RSS系统模板渲染每一个条目,需要给传递2个参数给模板上下文变量:

   obj : 当前对象 ( 返回到items() 任意对象之一 )。

  site : 一个表示当前站点的 django.models.core.sites.Site 对象。 这对于 {{ site.domain }} 或者 {{ site.name }} 很有用。

你也可以通过修改 Feed 类中的两个属性title_templatedescription_template 来改变这两个模板的名字。

你有两种方法来指定 <link> 的内容。 Django 首先执行 items() 中每一项的 get_absolute_url() 方法。 如果该方法不存在,就会尝试执行 Feed 类中的 item_link() 方法,并将自身作为 item 参数传递进去。
get_absolute_url()
item_link() 都应该以Python字符串形式返回URL。


 类似资料:

相关阅读

相关文章

相关问答