sitemapを作るのはDjangoに組み込まれているモジュールを使えば簡単
sitemapの生成は、django.contrib.sitemaps.views.sitemapを使うことにとても簡単に出来ます。
生成自体は、既にやっていたのですが、sitemapが肥大化しており、開くと何秒も掛かるようになってしまっていたので、Googleのサイトマップドキュメントを見て、分割することにしました。
https://developers.google.com/search/docs/advanced/sitemaps/large-sitemaps?hl=ja
sitemapのindexファイルを作るのもDjangoなら簡単に出来る
実は、このsitemapを分割する為のindexファイルと呼ばれるものもDjangoのモジュールに組み込まれていて、簡単に出来ました。
class HomeSitemap(Sitemap):
priority = 1.0
changefreq = 'hourly'
location = '/'
def items(self):
return ['home']
class AboutSitemap(Sitemap):
priority = 1.0
changefreq = 'yearly'
location = '/about/'
def items(self):
return ['about']
from django.contrib.sitemaps.views import index, sitemap
from django.urls import path
sitemaps = {
'home': HomeSitemap, AboutSitemap
}
urlpatterns = [
path('sitemap.xml', index, {'sitemaps': sitemaps}),
path('sitemap_<section>.xml', sitemap, {'sitemaps': sitemaps})
]
こうすることで、sitemap.xmlにsitemap_home.xmlとsitemap_about.xmlのURLが入ったものが自動生成されます。メチャクチャ便利でした!
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://www.example.com/sitemap_home.xml</loc>
</sitemap>
<sitemap>
<loc>http://www.example.com/sitemap_about.xml</loc>
</sitemap>
</sitemapindex>








こんな便利なものが用意されていることに驚かされました。まだまだ、知らない便利なものって用意されてるんだろうなぁ。
最近知った、itertoolsも便利だったので、機会があればまとめたいと思います。