意味:
Sitemap
(サイトマップ)とは、ウェブサイトの構造を、クローラーに伝えるための仕組みのことです。Sitemapは、XMLファイルで作成し、ウェブサイトの運営ではほぼ全てのサイトで使われています。
Djangoでは、Sitemapを効率的に作成する仕組みが、あらかじめ用意されています。
別名:
Sitemap framework サイトマップフレームワーク
動作環境:
Djangoの
初期設定を終えた段階を想定しています。
OS: Linux Ubuntu 22
Program: Python 3.7
Framework: Django 4
Database: PostgreSQL 14
コマンドまとめ:
#python仮想環境に入る
source /xxx/[pythonenv]/bin/activate
source /hikari/bin/activate
source /pythonprj/ramen/bin/activate
cd /xxx/[djangoproject] #projectディレクトリへ移動
cd /hikari/front
cd /pythonprj/pasta
#INSTALLED_APPSへ追加
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.sites", #追加
"django.contrib.sitemaps", #追加
]
#django.contrib.sitesは、Djangoのバージョンによって、デフォルト設定である場合と、デフォルト設定でない場合があります。
#/pythonprj/pasta/articles に sitemap.py を追加
from django.contrib.sitemaps import Sitemap
from .models import Article
class BCategorySitemap(Sitemap): #他のClassも同様に設定する
changefreq = "yearly"
priority = 0.3
protocol = 'https'
def items(self):
return BCategory.objects.all()
def lastmod(self, obj):
return obj.created_at
#/pythonprj/pasta/urls.py に 以下を追加
from django.contrib.sitemaps.views import sitemap, index
from articles.sitemaps import BCategorySitemap, ACategorySitemap, ArticleSitemap, AmpSitemap
from django.urls import path
sitemaps = {
'BCategory': BCategorySitemap,
'ACategory': ACategorySitemap,
'Article': ArticleSitemap,
'Amp': AmpSitemap,
}
path('sitemap.xml', index, {'sitemaps': sitemaps}),
path('sitemap-<section>.xml', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
#gunicornの動作確認
sudo systemctl status gunicorn #状態確認
sudo systemctl restart gunicorn #再起動
sudo systemctl enable gunicorn #自動再起動の設定
#ブラウザの動作確認
https://tokyo-sensei.com/sitemap.xml #ブラウザでアクセス
探究資料:
djangoproject.com.