Реверс для 'Page' не найден. 'Page' не является допустимой функцией представления или именем шаблона
Эту ошибку я получил, когда хотел создать динамическую карту сайта.
sitemap.py
class DynamicSitemap(Sitemap):
changefreq = "daily"
priority = 0.5
def items(self):
return Page.objects.all()
models.py
class Page(models.Model):
city= models.CharField(max_length=40, verbose_name="Şehir")
seo = models.CharField(max_length=50, verbose_name="Seo")
def __str__(self):
return self.city
def get_absolute_url(self):
return reverse("Page", args=(self.pk,))
urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.sitemaps.views import sitemap
from home.sitemap import StaticViewSitemap, DynamicSitemap
sitemaps = {
'static': StaticViewSitemap,
'dynamic': DynamicSitemap
}
urlpatterns = [
path('', include("home.urls"), name="anasayfa"),
path('admin/', admin.site.urls),
path('sitemap.xml', sitemap, {"sitemaps":sitemaps}, name="sitemaps")
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
статическая карта сайта работает нормально, но при динамической карте сайта я получаю ту же ошибку. Спасибо тем, кто заинтересовался до сих пор.
Извините за мой плохой английский
Основываясь на get_absolute_url
, вы пытаетесь связать это с:
path(r'page', views.yardimsayfalari, name='page'),
Имя вашего представления page
, а не . Кроме того, вы указали Page
app_name = 'home'
, следовательно, полное имя представления - home:page
. Наконец, ваш путь не содержит ни одного параметра, поэтому не имеет особого смысла.args=(self.pk,)
Вы, таким образом, вероятно, должны включить параметр первичного ключа:
app_name = "home"
urlpatterns = [
# ⋮,
path('page/<int:pk>/', views.yardimsayfalari, name="page"),
# ⋮,
]
включите этот pk
параметр в ваше представление:
def yardimsayfalari(request, pk):
# …
# return HTTP response
и, наконец, обратитесь к представлению с помощью:
class Page(models.Model):
# ⋮
def get_absolute_url(self):
return reverse('home:page', args=(self.pk,))
Возможно, также имеет смысл работать с именованным параметром, так:
class Page(models.Model):
# ⋮
def get_absolute_url(self):
return reverse('home:page', kwargs={'pk': self.pk})
исходя из этого, я бы посоветовал (перечитать) третью часть учебника по Django.