给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使用random和tertools模块解一些经典概率问题
Jan 28 Python
Python基于有道实现英汉字典功能
Jul 25 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
利用python实现微信头像加红色数字功能
Mar 26 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
python3 求约数的实例
Dec 05 Python
如何写python的配置文件
Jun 07 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
matplotlib自定义鼠标光标坐标格式的实现
Jan 08 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
初探PHP5
2006/10/09 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
js post提交调用方法
2014/02/12 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
微信小程序实现文件预览
2020/10/22 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
Python去除列表中重复元素的方法
2015/03/20 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
使用Python来开发微信功能
2018/06/13 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
python多进程并行代码实例
2019/09/30 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
大一新生军训时的自我评价分享
2013/12/05 职场文书
运动会入场词50字
2014/02/20 职场文书
勾股定理课后反思
2014/04/26 职场文书
高一军训感想
2015/08/07 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
Redis特殊数据类型bitmap位图
2022/06/01 Redis
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android