博客提供 RSS 訂閱應該是標配。這樣讀者就可以通過一些聚合閱讀工具來訂閱你的博客,時時查看是否有更新,而不必每次都跳轉到博客上來查看。
RSS 簡介
RSS(Really Simple Syndication)是一種描述和同步網站內容的格式。,它採用 XML 作爲內容傳遞的格式。
簡單來說就是網站可以把內容包裝成符合 RSS 標準的 XML 格式文檔。
一旦網站內容符合一個統一的規範,那麼人們就可以開發一種讀取這種規範化的 XML 文檔的工具來聚合各大網站的內容。
使用 Django Feed 類
根據以上對 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 模式,讓人們訪問這個 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>
RSS 測試插件
使用360瀏覽器,安裝一個RSS Feed Reader應用。
訂閱我們的rss地址即可:http://127.0.0.1:8000/all/rss/