Ошибка Django NoReverseMatch в /sitemap.xml для статических представлений

Я следовал инструкциям в документации по django, но я получаю эту ошибку при попытке создать sitemap.xml для моего приложения. (также похожие вопросы на stackoverflow не описывают мой случай)

enter image description here

html-страницы, которые я хочу добавить в карту сайта, не основаны на каких-либо моделях, но у них есть некоторые формы в футере. (Вот почему урлы не содержат "as_view()". Я также добавил

INSTALLED_APPS = [
    ...
    'django.contrib.sites',
    'django.contrib.sitemaps',
    '''
]

в файл settings.py.

Вот более подробная информация:

App --> main

main/urls.py

from django.urls import path
from . import views

app_name = 'main'

urlpatterns = [
    path('', views.HomeView, name='homepage'),
    path('about/', views.AboutView, name='about'),
    path('contact/', views.Contact, name='contact'),
]

main/sitemap.py

from django.contrib.sitemaps import Sitemap
from django.urls import reverse

class StaticViewSitemap(Sitemap):
    changefreq = 'daily'
    priority = 0.9

    def items(self):
        return ['homepage','about','contact']

    def location(self, item):
        return reverse(item)

Проект --> dcohort

dcohort/urls.py

from argparse import Namespace
from django.contrib import admin
from django.urls import path, include
from django.contrib.sitemaps.views import sitemap
from main.sitemaps import StaticViewSitemap
from django.conf import settings
from django.conf.urls.static import static

sitemaps = {
    'staticviews': StaticViewSitemap,
}

urlpatterns = [
    path('', include('main.urls', namespace='main')),
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
        name='django.contrib.sitemaps.views.sitemap'),
]

Наконец-то я понял, в чем проблема. Я должен был добавить название приложения к названию url страницы.

В файле main/sitemap.py будет:

from django.contrib.sitemaps import Sitemap

from django.urls import reverse

class StaticViewSitemap(Sitemap):
    changefreq = 'daily'
    priority = 0.9

    def items(self):
        return ['main:homepage','main:about','main:contact']

    def location(self, item):
        return reverse(item)
Вернуться на верх