Django RSS


Django带有一个联合供稿生成框架。有了它,只需通过 继承django.contrib.syndication.views.Feed类 即可创建RSS或Atom提要。

让我们为应用程序上的最新评论创建一个feed(另请参阅Django - 评论框架章节)。为此,我们创建一个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类中, 标题链接描述 属性对应于标准RSS < title>< link>< description>元素。

  • 项目 的方法,返回应该进的项目元素进去的元素。在我们的案例中,最后的五条评论。

  • ITEM_TITLE 方法,会得到什么会去为标题对我们的饲料项目。在我们的例子中,标题将是用户名。

  • ITEM_DESCRIPTION 方法,会得到什么会去为说明我们的饲料项目。在我们的案例中,评论本身。

  • ITEM_LINK 方法将建立链接的全部项目。在我们的情况下,它会让你接受评论。

现在我们有了我们的供稿,让我们在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(一个用于访问提要,另一个用于访问提要元素)被定义。正如评论,这可以附加到您的应用程序中的任何模型。