给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简单的函数定义和用法实例
May 07 Python
简单的python后台管理程序
Apr 13 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
PyTorch学习笔记之回归实战
May 28 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
Flask配置Cors跨域的实现
Jul 12 Python
python在OpenCV里实现投影变换效果
Aug 30 Python
快速解决jupyter启动卡死的问题
Apr 10 Python
520使用Python实现“我爱你”表白
May 20 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
python使用列表的最佳方案
Aug 12 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
php array_walk() 数组函数
2011/07/12 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
Python实现Const详解
2015/01/27 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
python对csv文件追加写入列的方法
2019/08/01 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
python中pop()函数的语法与实例
2020/12/01 Python
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
explicit和implicit的含义
2012/11/15 面试题
会展中心部门工作职责
2013/11/27 职场文书
高中生自我评语大全
2014/01/19 职场文书
房地产财务管理制度
2014/02/02 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL