django feed

先了解下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。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值