这是我想创建一个动态站点地图时遇到的错误。
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教程的第三部分。