AI智能
改变未来

django中的RSS使用

在相应App下新增rss.py文件:

class LatestPostFeed(Feed):feed_type = Rss201rev2Feedtitle = \"Typeidea Blog System\"link = \"/rss/\"description = \"typeidea is a blog system power by django\"def items(self):return Post.objects.filter(status=Post.STATUS_NORMAL)[:5]def item_title(self, item):return item.titledef item_description(self, item):return item.descdef item_link(self, item):return reverse(\'post-detail\', args=[item.pk])

其中feed_type可以不写,默认使用Rss201rev2Feed,这里写出来是标明这个地方可以被赋值为其他类型。可以进行定制。

上面的代码并没有输出正文部分,我们可以通过定义feed_type来实现:

from django.contrib.syndication.views import Feedfrom django.urls import reversefrom django.utils.feedgenerator import Rss201rev2Feedfrom blog.models import Postclass ExtendedRSSFeed(Rss201rev2Feed):def add_item_elements(self, handler, item):super(ExtendedRSSFeed, self).add_item_elements(handler, item)handler.addQuickElement(\'content:html\', item[\'content_html\'])# 定义ExtendedRSSFeed类重写 add_item_elements 方法,实现自定义输出# addQuickElement(), 第二个参数中的comment_html是模型中的一个字段class LatestPostFeed(Feed):feed_type = ExtendedRSSFeedtitle = \"Typeidea Blog System\"link = \"/rss/\"description = \"typeidea is a blog system power by django\"def items(self):return Post.objects.filter(status=Post.STATUS_NORMAL)[:5]def item_title(self, item):return item.titledef item_description(self, item):return item.descdef item_link(self, item):return reverse(\'post-detail\', args=[item.pk])def item_extra_kwargs(self, item):return {\'content_html\': self.item_content_html(item)}def item_content_html(self, item):return item.content_html
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » django中的RSS使用