反转'Page'找不到。 'Page'不是有效的视图函数或模式名称



这是我想创建一个动态站点地图时遇到的错误。

sitemap.py

from django.contrib import sitemaps
from django.shortcuts import reverse
from django.utils import timezone
from django.contrib.sitemaps import Sitemap
#models
from home.models import Page

class StaticViewSitemap(sitemaps.Sitemap):
priority = 0.5
changefreq = "daily"
protocol = 'https'
def items(self):
return [
'home:about',           
]
def location(self, item):
return reverse(item)
def lastmod(self, item):
return timezone.now()

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('home:page', kwargs={'pk': self.pk})

家/urls . py:

app_name = "home"
urlpatterns = [
# ⋮,
path(r'page/<int:pk>', views.yardimsayfalari, name="page"),
# ⋮,
]

静态站点地图工作良好,但动态站点地图我得到相同的错误。感谢所有感兴趣的人。

我很抱歉我的英语不好

基于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教程的第三部分。

最新更新