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

'Post' object has no attribute 'get_absolute_url' Django

我正在尝试在 Django 中创建站点地图,但出现错误

'Post' object has no attribute 'get_absolute_url'

这是我的anotherfile/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

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

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

If location isn't provided, the framework will call the get_absolute_url() method on each object as returned by items().

Model.get_absolute_url()

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

例如:

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

为了确定站点地图中的路径,您需要为制作站点地图的模型实施 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)

    def <b>get_absolute_url</b>(self):
        return reverse(<i>'name-of-some-view'</i>, kwargs={<i>'para': 'meters'</i>})

    def __str__(self):
        return self.number

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