Ошибка Django NoReverseMatch в /sitemap.xml для статических представлений
Я следовал инструкциям в документации по django, но я получаю эту ошибку при попытке создать sitemap.xml для моего приложения. (также похожие вопросы на stackoverflow не описывают мой случай)
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)