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も便利だったので、機会があればまとめたいと思います。