かなりハマったのでメモ・・・
やることだけ書いていきます。
settings.pyを編集
以下の内容を追記します
SITE_ID = 1
以下略
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites', ←これと
'django.contrib.sitemaps', ←これ
'bootstrap4',
]
urls.pyを編集(settings.pyが置かれてるディレクトリのやつ)
from django.contrib.sitemaps.views import sitemap
from .sitemaps import StaticViewSitemap
sitemaps = {
'static': StaticViewSitemap,
}
urlpatterns = [
path('', views.index, name='index'),
path('kuso/', include('kuso.urls', namespace='kuso')),
path('admin/', admin.site.urls),
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap')
]
sitemaps = {
'static': StaticViewSitemap,
}
と
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap')
を追加する感じです。
sitemaps.pyを作成(settings.pyが置かれてるディレクトリに)
from django.contrib import sitemaps
from django.urls import reverse
class StaticViewSitemap(sitemaps.Sitemap):
priority = 0.5
changefreq = 'weekly'
def items(self):
return ['kuso:kasu']
def location(self, item):
return reverse(item)
気にするべきところは、
def items(self):
return ['kuso:kasu']
の指定の仕方で、
urls.pyで書いたnamespaceとnameを指定する必要があります。
これがわからなくてだいぶハマりました。
(もともとnamespaceを設定すらしていなかったので・・・)
ここまで設定すれば、
http://hogehoge.com/sitemap.xml
にアクセスすると、
http://hogehoge.com/kuso/kasu
っていうURLが記載されたsitemapが表示されるはずです。(kuso:kasuは
nameなのでURLと同じであるとは限りませんが)
そんな感じです。