给Python的Django框架下搭建的BLOG添加RSS功能的教程
前些天有位网友建议我在博客中添加RSS订阅功能,觉得挺好,所以自己抽空看了一下如何在Django中添加RSS功能,发现使用Django中的syndicationfeedframework很容易实现。
具体实现步骤和代码如下:
1、Feed类
#-*-coding:utf-8-*-
fromdjango.confimportsettings
fromdjango.contrib.syndication.viewsimportFeed
fromdjango.utils.feedgeneratorimportRss201rev2Feed
fromblog.modelsimportArticle
from.constantsimportSYNC_STATUS
classExtendedRSSFeed(Rss201rev2Feed):
mime_type='application/xml'
"""
CreateatypeofRSSfeedthathascontent:encodedelements.
"""
defroot_attributes(self):
attrs=super(ExtendedRSSFeed,self).root_attributes()
attrs['xmlns:content']='http://purl.org/rss/1.0/modules/content/'
returnattrs
defadd_item_elements(self,handler,item):
super(ExtendedRSSFeed,self).add_item_elements(handler,item)
handler.addQuickElement(u'content:encoded',item['content_encoded'])
classLatestArticleFeed(Feed):
feed_type=ExtendedRSSFeed
title=settings.WEBSITE_NAME
link=settings.WEBSITE_URL
author=settings.WEBSITE_NAME
description=settings.WEBSITE_DESC+u"关注python、django、vim、linux、web开发和互联网"
defitems(self):
returnArticle.objects.filter(hided=False,published=True,sync_status=SYNC_STATUS.SYNCED).order_by('-publish_date')[:10]
defitem_extra_kwargs(self,item):
return{'content_encoded':self.item_content_encoded(item)}
defitem_title(self,item):
returnitem.title
#item_linkisonlyneededifNewsItemhasnoget_absolute_urlmethod.
defitem_link(self,item):
return'/article/%s/'%item.slug
defitem_description(self,item):
returnitem.description
defitem_author_name(self,item):
returnitem.creator.get_full_name()
defitem_pubdate(self,item):
returnitem.publish_date
defitem_content_encoded(self,item):
returnitem.content
2、URL配置
fromdjangoimportVERSION ifVERSION[0:2]>(1,3): fromdjango.conf.urlsimportpatterns,include,url else: fromdjango.conf.urls.defaultsimportpatterns,include,url from.feedsimportLatestArticleFeed urlpatterns=patterns( '', url(r'^feed/$',LatestArticleFeed()), )
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短