给Python的Django框架下搭建的BLOG添加RSS功能的教程


Posted in Python onApril 08, 2015

前些天有位网友建议我在博客中添加RSS订阅功能,觉得挺好,所以自己抽空看了一下如何在Django中添加RSS功能,发现使用Django中的syndication feed framework很容易实现。

    具体实现步骤和代码如下:

    1、Feed类

# -*- coding: utf-8 -*-
from django.conf import settings
from django.contrib.syndication.views import Feed
from django.utils.feedgenerator import Rss201rev2Feed
 
from blog.models import Article
from .constants import SYNC_STATUS
 
 
class ExtendedRSSFeed(Rss201rev2Feed):
 mime_type = 'application/xml'
 """
 Create a type of RSS feed that has content:encoded elements.
 """
 def root_attributes(self):
  attrs = super(ExtendedRSSFeed, self).root_attributes()
  attrs['xmlns:content'] = 'http://purl.org/rss/1.0/modules/content/'
  return attrs
 
 def add_item_elements(self, handler, item):
  super(ExtendedRSSFeed, self).add_item_elements(handler, item)
  handler.addQuickElement(u'content:encoded', item['content_encoded'])
 
 
class LatestArticleFeed(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开发和互联网"
 
 def items(self):
  return Article.objects.filter(hided=False, published=True, sync_status=SYNC_STATUS.SYNCED).order_by('-publish_date')[:10]
 
 def item_extra_kwargs(self, item):
  return {'content_encoded': self.item_content_encoded(item)}
 
 def item_title(self, item):
  return item.title
 
 # item_link is only needed if NewsItem has no get_absolute_url method.
 def item_link(self, item):
  return '/article/%s/' % item.slug
 
 def item_description(self, item):
  return item.description
 
 def item_author_name(self, item):
  return item.creator.get_full_name()
 
 def item_pubdate(self, item):
  return item.publish_date
 
 def item_content_encoded(self, item):
  return item.content

    2、URL配置

from django import VERSION
 
if VERSION[0: 2] > (1, 3):
 from django.conf.urls import patterns, include, url
else:
 from django.conf.urls.defaults import patterns, include, url
from .feeds import LatestArticleFeed
 
 
urlpatterns = patterns(
 '',
 url(r'^feed/$', LatestArticleFeed()),
)
Python 相关文章推荐
在Python中实现贪婪排名算法的教程
Apr 17 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
Python实现的个人所得税计算器示例
Jun 01 Python
如何使用Python标准库进行性能测试
Jun 25 Python
libreoffice python 操作word及excel文档的方法
Jul 04 Python
django基于存储在前端的token用户认证解析
Aug 06 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
tensorflow之并行读入数据详解
Feb 05 Python
PyTorch 导数应用的使用教程
Aug 31 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
Django数据统计功能count()的使用
Nov 30 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
在Python中使用NLTK库实现对词干的提取的教程
Apr 08 #Python
使用Python操作Elasticsearch数据索引的教程
Apr 08 #Python
用Python实现协同过滤的教程
Apr 08 #Python
在Python中调用ggplot的三种方法
Apr 08 #Python
Python字符串和文件操作常用函数分析
Apr 08 #Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 #Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 #Python
You might like
PHP xpath()函数讲解
2019/02/11 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
Python实现简单字典树的方法
2016/04/29 Python
python机器学习之神经网络(三)
2017/12/20 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
python多线程下信号处理程序示例
2019/05/31 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
用Python开发app后端有优势吗
2020/06/29 Python
python 模拟登陆163邮箱
2020/12/15 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
法警的竞聘演讲稿
2014/01/02 职场文书
yy结婚证婚词
2014/01/10 职场文书
安全目标管理责任书
2014/07/25 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
公司与个人合作协议书
2016/03/19 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers