Django RSS

Django RSS

Django 自带了一个生成订阅源的框架。通过继承 django.contrib.syndication.views.Feed 类,你可以创建 RSS 或 Atom 订阅源。

让我们为应用程序上最新的评论创建一个订阅源(还可以参见Django – Comments Framework章节)。为此,让我们创建一个 myapp/feeds.py 文件,并定义我们的订阅源(你可以将你的订阅源类放在代码结构的任何地方)。

from django.contrib.syndication.views import Feed
from django.contrib.comments import Comment
from django.core.urlresolvers import reverse

class DreamrealCommentsFeed(Feed):
   title = "Dreamreal's comments"
   link = "/drcomments/"
   description = "Updates on new comments on Dreamreal entry."

   def items(self):
      return Comment.objects.all().order_by("-submit_date")[:5]

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

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

   def item_link(self, item):
      return reverse('comment', kwargs = {'object_pk':item.pk})
  • 在我们的feed类中, titlelinkdescription 属性对应于标准的RSS < title>< link>< description>元素。

  • items 方法返回应放入feed中的项元素。在我们的例子中,返回最后五条评论。

  • item_title 方法将作为feed项的标题。在我们的例子中,标题将是用户名。

  • item_description 方法将作为feed项的描述。在我们的例子中,描述将是评论本身。

  • item_link 方法将构建到完整项的链接。在我们的例子中,它会将您带到评论页面。

现在我们有了我们的feed,让我们在views.py中添加一个评论视图来显示我们的评论。

from django.contrib.comments import Comment

def comment(request, object_pk):
   mycomment = Comment.objects.get(object_pk = object_pk)
   text = '<strong>User :</strong> %s <p>'%mycomment.user_name</p>
   text += '<strong>Comment :</strong> %s <p>'%mycomment.comment</p>
   return HttpResponse(text)

我们还需要在myapp的urls.py中添加一些URL进行映射 –

from myapp.feeds import DreamrealCommentsFeed
from django.conf.urls import patterns, url

urlpatterns += patterns('',
   url(r'^latest/comments/', DreamrealCommentsFeed()),
   url(r'^comment/(?P\w+)/', 'comment', name = 'comment'),
)

当访问/myapp/latest/comments/时,您将获得我们的Feed –

Django RSS

然后点击其中一个用户名将会跳转到:/myapp/comment/comment_id,正如我们之前在评论视图中定义的,你将会得到以下内容:

Django RSS

因此,定义RSS订阅仅涉及对Feed类进行子类化,并确保定义了URL(一个用于访问订阅,一个用于访问订阅元素)。仅作为评论,这可以附加到您应用程序中的任何模型。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程