博客提供 RSS 订阅应该是标配。这样读者就可以通过一些聚合阅读工具来订阅你的博客,时时查看是否有更新,而不必每次都跳转到博客上来查看。
RSS(Really Simple Syndication)是一种描述和同步网站内容的格式。,它采用 XML 作为内容传递的格式。
简单来说就是网站可以把内容包装成符合 RSS 标准的 XML 格式文档。
一旦网站内容符合一个统一的规范,那么人们就可以开发一种读取这种规范化的 XML 文档的工具来聚合各大网站的内容。
根据以上对 RSS 的介绍,我们可以发现关键的地方就是根据网站的内容生成规范化的 XML 文档。
Django 已经内置了一些生成这个文档的方法.
在 blog 应用的根目录下(models.py 所在目录)新建一个 feeds.py 文件以存放和 RSS 功能相关的代码.然后在feeds.py中写入如下代码:
from django.contrib.syndication.views import Feed
from .models import Post
class AllPostRssFeed(Feed):
# 显示在聚合阅读器上的标题
title = "千峰博客"
# 通过聚合阅读器跳转到网址的地址
link = '/index/'
# 显示在聚合阅读器上的描述信息
description = "千峰博客项目演示测试"
# 需要显示的内容条目
def items(self):
return Post.objects.all()
# 聚合器中显示的内容条目的标题
def item_title(self, item):
return '[%s]%s' % (item.category, item.title)
# 聚合器中显示的内容条目的描述
def item_description(self, item):
return item.content
以上代码就是指定要生成的xml文档内容。
接下来就是指定 URL 模式,让人们访问这个 URL 后就可以看到 Feed 生成的内容。
通常 RSS 的 URL 配置直接写在项目的 urls.py 文件里。
项目的urls.py中:
记得在顶部引入 AllPostsRssFeed
url(r'^all/rss/$', AllPostRssFeed(), name='rss'),
简单修改一下基模板,把 RSS 的 URL 添加到模板中,放在标签云下面:
【templates/base.html】
<div class="rss">
<a href="{% url 'rss' %}"><span class="ion-social-rss-outline"></span> RSS 订阅</a>
</div>
使用360浏览器,安装一个RSS Feed Reader应用。
订阅我们的rss地址即可:http://127.0.0.1:8000/all/rss/