如何在 Django 專案中新增 RSS Feed 和 Sitemap?


簡介

整合網站元件,如站點地圖RSS(簡易資訊聚合)Feed,可以帶來諸多好處,例如增強使用者訪問性、提升網站內容消費和改善搜尋引擎效能。開發者可以利用 Django 簡化構建 Web 應用程式的過程,從而建立高效且使用者友好的網站。

什麼是 RSS 和 Sitemap?

RSS Feed 是包含網站內容摘要的 XML 檔案,例如文章標題和描述。使用者可以使用 RSS 閱讀器讀取這些檔案,輕鬆獲取內容,而無需訪問網站。另一方面,站點地圖是包含網站上每個頁面列表的 XML 檔案。它們透過允許搜尋引擎抓取和索引網站來幫助提高網站在搜尋引擎結果頁面 (SERP) 上的可見度。將 RSS Feed 和站點地圖新增到 Django 專案中可以顯著增強網站的可見度和使用者體驗。

在 Django 專案中新增 RSS 和 Sitemap 的步驟

要在 Django 專案中新增 RSS Feed 和 Sitemap,我們需要遵循以下步驟:

  • 安裝 Django 包:

pip install django
  • 啟動 Django 專案

django-admin startproject example
  • 從本地機器執行開發伺服器

python manage.py runserver
  • 啟動一個新的應用程式以顯示 RSS 和 Sitemap

python manage.py startapp dj-app
  • python manage.py makemigrations python manage.py migrate

此時,應用程式專案目錄“dj-app”中將已經建立了三個檔案。我們將修改settings.py 檔案、views.py 檔案urls.py 檔案以獲得期望的結果。

  • settings.py 檔案中的INSTALLED_APPS列表中新增'django.contrib.syndication''django.contrib.sitemaps'

INSTALLED_APPS = [
   ...
   'django.contrib.syndication',
   'django.contrib.sitemaps',
]
  • views.py 檔案中為 RSS Feed 建立一個,該類繼承自 Django syndication feed 類:

from django.contrib.syndication.views import Feed

class MyFeed(Feed):
   title = "TutorialsPoint"
   link = "/blog/"
   description = "A TutorialsPoint Example of RSS and Sitemap"

   def items(self):
      return BlogPost.objects.order_by('-published')[:5]

   def item_title(self, item):
      return item.title

   def item_description(self, item):
      return item.body

   def item_link(self, item):
      return reverse('blog_post', args=[item.slug])
  • 為 RSS Feed 建立一個URL 模式

from django.urls import path
from .feeds import MyFeed

urlpatterns = [
   ...
   path('feed/', MyFeed(), name='feed'),
]
  • 為 Sitemap 建立一個,該類繼承自 Django sitemap 類:

from django.contrib.sitemaps import Sitemap
from django.urls import reverse

class MySitemap(Sitemap):
   changefreq = "weekly"
   priority = 0.5

   def items(self):
      return [HomeView, AboutView, ContactView, BlogPostView]

   def location(self, item):
      return reverse(item)
  • urls.py中為 Sitemap 建立一個URL 模式

from django.contrib.sitemaps.views import sitemap
from .sitemaps import MySitemap

sitemaps = {
   'pages': MySitemap(),
}

urlpatterns = [
   ...
   path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]

讓我們深入瞭解上面說明的步驟的細節:

程式碼從 Django 中匯入必要的包和模組,包括 Feed、Sitemap 和 reverse。

  • 定義一個名為MyFeed的類,它擴充套件了 Feed 類,並設定了 RSS Feed 的標題、連結和描述。

  • 在 MyFeed 類中定義了 items 方法,該方法返回按釋出日期排序的最新 5 篇部落格文章。

  • item_title、item_description 和 item_link方法也在 MyFeed 類中定義,用於檢索每篇部落格文章的標題、正文和 slug。

  • 還定義了MySitemap類,它擴充套件了 Sitemap 類並設定了站點地圖的 changefreq 和 priority。

  • MySitemap 類中的 items 方法返回首頁、關於頁面、聯絡頁面和部落格文章頁面的 URL 列表。

  • MySitemap 類中的 location 方法定義為透過使用專案作為引數呼叫 reverse 函式來返回列表中每個專案的 URL。

結論

這篇文章演示了一種將 RSS Feed 和 Sitemap 整合到使用 Django 建立的 Web 應用程式中的方法。該方法涉及定義 MyFeed 和 MySitemap 類,它們分別是 Feed 和 Sitemap 類的擴充套件。這些類提供有關最新部落格文章和網頁的相關資訊和連結,從而能夠為網站建立站點地圖和 RSS Feed。MyFeed 類提供了按釋出日期排序的最新五篇部落格文章的標題、正文和 slug。MySitemap 類使用 reverse 方法獲取網站首頁、關於頁面和其他相關頁面的 URL,以獲取每個專案的 URL。此示例說明了如何使用 Django 為 Web 應用程式(如站點地圖和 RSS Feed)建立高效的功能。

更新於: 2023年8月21日

110 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.