LoginSignup
1
2

More than 5 years have passed since last update.

djangoで作った静的ページのサイトマップ(url)を作成する方法

Posted at

かなりハマったのでメモ・・・

やることだけ書いていきます。

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と同じであるとは限りませんが)

そんな感じです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2