Django-RSS

  • 简述

    Django 带有一个联合提要生成框架。有了它,您只需通过子类化即可创建 RSS 或 Atom 提要django.contrib.syndication.views.Feed class.
    让我们为应用程序上的最新评论创建一个提要(另见 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})
    
    • 在我们的饲料类中,title,link, 和description属性对应标准RSS<title>,<link><description>元素。
    • items方法,返回应该作为项目元素进入提要的元素。在我们的例子中,最后五个评论。
    • 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/ 时,您将获得我们的提要 -
    Django RSS 示例
    然后单击其中一个用户名将带您进入:/myapp/comment/comment_id,如我们之前评论视图中定义的那样,您将获得 -
    Django RSS 重定向页面
    因此,定义 RSS 提要只是对提要类进行子分类并确保定义了 URL(一个用于访问提要,一个用于访问提要元素)。正如评论一样,这可以附加到您应用程序中的任何模型。