(1)INSTALLED_APPSにdjango.contrib.sitemapsを追加
(2)Sitemap対象としたいモデルにSitemapの派生モデルを定義する。
- 「items」にサイトマップ対象となるモデルの全モデルインスタンスを定義。
- 「location」に、モデルインスタンス(obj)が引数として渡されるので、そのobjに対応したURLをリターンするように定義する。
- 「lastmod」に、モデルインスタンス(obj)のページの最終更新日情報をリターンするように定義する。
1 2 3 4 5 6 7 8 9 | from django.contrib.sitemaps import Sitemap class MoviesSitemap(Sitemap): priority = 0.8 def items(self): return Movies.objects.all() def location(self, obj): return reverse("movie_item", args=[obj.id]) def lastmod(self, obj): return obj.last_updated |
(3)トップレベルのurls.pyに以下を追加
from jim.movies.models import MoviesSitemap
sitemaps = { 'movies': MoviesSitemap, 'photo': ImageSitemap, 'group': TribeSitemap, }
(4)上記urls.urlpatternsにエントリを追加
... ('^sitemap.xml', 'django.contrib.sitemaps.views.index', {'sitemaps': sitemaps}), ('^sitemap-(?P.+).xml', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}), ...
(5)あとは、/sitemaps.xmlにブラウザからアクセスすれば、生成されたサイトマップが閲覧できる。
1 2 | from jim.movies.models import MoviesSitemap sitemaps = { 'movies': MoviesSitemap, 'photo': ImageSitemap, 'group': TribeSitemap, } |
(4)上記urls.urlpatternsにエントリを追加
1 2 3 4 5 6 | ... ('^sitemap.xml', 'django.contrib.sitemaps.views.index', {'sitemaps': sitemaps}), ('^sitemap-(?P.+).xml', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}), ... |
(5)あとは、/sitemaps.xmlにブラウザからアクセスすれば、生成されたサイトマップが閲覧できる。