Реверс для '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.

Вернуться на верх