二十五岁时我们都一样愚蠢、多愁善感,喜欢故弄玄虚,可如果不那样的话,五十岁时也就不会如此明智。
标题: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 -
然后点击其中一个用户名将会让你:/ myapp / comment / comment_id在我们的评论视图中定义,你会得到 -
因此,定义一个RSS提要只是对Feed类进行子分类并确保URL(一个用于访问提要,另一个用于访问提要元素)被定义。正如评论,这可以附加到您的应用程序中的任何模型。