"Post"对象没有属性"get_absolute_url"Django



我试图在Django中创建一个站点地图,但我得到了一个错误

'Post' object has no attribute 'get_absolute_url'

这是我的另一个文件/sitemap.py

from django.contrib.sitemaps import Sitemap
from somefile.models import Post
class site_map(Sitemap):
changefreq = "daily"
priority = 0.8
def items(self):
return Post.objects.all()
def lastmod(self, obj):
return obj.time_stamp

这是我的somefile/models.py

class Post(models.Model):
number=models.AutoField(primary_key=True)
slug=models.CharField(max_length=130)
time_stamp=models.DateTimeField(blank=True)
def __str__(self):
return self.number

为了确定站点地图中的路径,您需要为制作站点地图的模型实现get_absolute_url,因此:

from django.urls import reverse
class Post(models.Model):
number=models.AutoField(primary_key=True)
slug=models.CharField(max_length=130)
time_stamp=models.DateTimeField(blank=True)
defget_absolute_url(self):
return reverse('name-of-some-view', kwargs={'para': 'meters'})
def __str__(self):
return self.number

使用reverse(…)[Django-doc],您可以根据视图的名称以及相应路径所需的参数来计算URL。

我从未使用过它,但听起来您的Post模型没有get_absolute_url方法。

http://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/#django.contrib.sitemaps.Sitemap.location

如果没有提供位置,框架将调用items((返回的每个对象上的get_absolute_url((方法。

Model.get_absolute_url((

定义一个get_absolute_url((方法来告诉Django如何计算对象的规范url。对于调用方,此方法应显示为返回一个字符串,该字符串可用于通过HTTP引用对象。

例如:

def get_absolute_url(self):
return "/post/%i/" % self.id

最新更新