Python Django网站地图';邮政';对象没有属性';获取绝对url';?

Python Django网站地图';邮政';对象没有属性';获取绝对url';?,python,django,Python,Django,我正在创建一个简单的django 1.9应用程序,其中包括一个博客,我希望该网站拥有由网站页面和博客文章条目组成的网站地图。到目前为止,我能够构建一个网站地图,将静态页面生成为网站地图,但博客文章网站地图给了我一个错误“post”对象没有属性“get_absolute\u url,这是我的有人告诉我哪里出了问题 sitemaps.py from django.contrib import sitemaps from django.contrib.sitemaps import Sitemap

我正在创建一个简单的django 1.9应用程序,其中包括一个博客,我希望该网站拥有由网站页面和博客文章条目组成的网站地图。到目前为止,我能够构建一个网站地图,将静态页面生成为网站地图,但博客文章网站地图给了我一个错误
“post”对象没有属性“get_absolute\u url
,这是我的有人告诉我哪里出了问题

sitemaps.py

from django.contrib import sitemaps

from django.contrib.sitemaps import Sitemap

from django.core.urlresolvers import reverse

from administration.models import Post


class StaticSitemap(sitemaps.Sitemap):

      changefreq = "daily"

      priority = 1.0



     def items(self):

          return ['administration:index', 'administration:about']



     def location(self, item):
          return reverse(item)



class PostSitemap(Sitemap):

      changefreq = "daily"

      priority = 0.5


      def items(self):
          return Post.objects.all()`
class Post(models.Model):
    STATUS_CHOICES = (('draft', 'Draft'),('published', 'Published'),)
    featured_image = models.ImageField(upload_to="Photos/posts/images", blank=True, null=True)
    post_short_description = models.TextField(default="No description available")
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date='publish')
    category = models.ForeignKey(Category)
    tag = models.ManyToManyField(Tag)
    author = models.ForeignKey(User,related_name='blog_posts',on_delete=models.CASCADE)
    body = RichTextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES,default='draft')

    class Meta:
        ordering = ('-publish',)

    def __str__(self):
        return self.title
from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.sitemaps.views import sitemap
from administration.sitemaps import PostSitemap, StaticSitemap

sitemaps = {
   'post':PostSitemap,'static':StaticSitemap
}

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('administration.urls')),
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, 
    name='django.contrib.sitemaps.views.sitemap'),
    url(r'^robots\.txt', include('robots.urls')),
    url(r'^', include('cms.urls'))
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
型号.py

from django.contrib import sitemaps

from django.contrib.sitemaps import Sitemap

from django.core.urlresolvers import reverse

from administration.models import Post


class StaticSitemap(sitemaps.Sitemap):

      changefreq = "daily"

      priority = 1.0



     def items(self):

          return ['administration:index', 'administration:about']



     def location(self, item):
          return reverse(item)



class PostSitemap(Sitemap):

      changefreq = "daily"

      priority = 0.5


      def items(self):
          return Post.objects.all()`
class Post(models.Model):
    STATUS_CHOICES = (('draft', 'Draft'),('published', 'Published'),)
    featured_image = models.ImageField(upload_to="Photos/posts/images", blank=True, null=True)
    post_short_description = models.TextField(default="No description available")
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date='publish')
    category = models.ForeignKey(Category)
    tag = models.ManyToManyField(Tag)
    author = models.ForeignKey(User,related_name='blog_posts',on_delete=models.CASCADE)
    body = RichTextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES,default='draft')

    class Meta:
        ordering = ('-publish',)

    def __str__(self):
        return self.title
from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.sitemaps.views import sitemap
from administration.sitemaps import PostSitemap, StaticSitemap

sitemaps = {
   'post':PostSitemap,'static':StaticSitemap
}

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('administration.urls')),
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, 
    name='django.contrib.sitemaps.views.sitemap'),
    url(r'^robots\.txt', include('robots.urls')),
    url(r'^', include('cms.urls'))
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
url.py

from django.contrib import sitemaps

from django.contrib.sitemaps import Sitemap

from django.core.urlresolvers import reverse

from administration.models import Post


class StaticSitemap(sitemaps.Sitemap):

      changefreq = "daily"

      priority = 1.0



     def items(self):

          return ['administration:index', 'administration:about']



     def location(self, item):
          return reverse(item)



class PostSitemap(Sitemap):

      changefreq = "daily"

      priority = 0.5


      def items(self):
          return Post.objects.all()`
class Post(models.Model):
    STATUS_CHOICES = (('draft', 'Draft'),('published', 'Published'),)
    featured_image = models.ImageField(upload_to="Photos/posts/images", blank=True, null=True)
    post_short_description = models.TextField(default="No description available")
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date='publish')
    category = models.ForeignKey(Category)
    tag = models.ManyToManyField(Tag)
    author = models.ForeignKey(User,related_name='blog_posts',on_delete=models.CASCADE)
    body = RichTextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES,default='draft')

    class Meta:
        ordering = ('-publish',)

    def __str__(self):
        return self.title
from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.sitemaps.views import sitemap
from administration.sitemaps import PostSitemap, StaticSitemap

sitemaps = {
   'post':PostSitemap,'static':StaticSitemap
}

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('administration.urls')),
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, 
    name='django.contrib.sitemaps.views.sitemap'),
    url(r'^robots\.txt', include('robots.urls')),
    url(r'^', include('cms.urls'))
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

当您使用
Sitemap
类并且自己没有实现
location()
方法时,默认情况是对每个对象调用
get\u absolute\u url()

网站上的文件说:

本例中没有location方法,但您可以提供它来指定对象的URL。默认情况下,location()对每个对象调用get_absolute_url(),并返回结果


因此,您应该在
PostSitemap
上实现
location()
,或者在
Post
模型上实现
get\u absolute\u url()

当您使用
Sitemap
类并且自己没有实现
location()
方法时,默认是调用
get\u absolute\u url()
在每个对象上

网站上的文件说:

本例中没有location方法,但您可以提供它来指定对象的URL。默认情况下,location()对每个对象调用get_absolute_url(),并返回结果


因此,您应该在
PostSitemap
上实现
location()
,或者在
Post
模型上实现
get\u absolute\u url()

谢谢您的帮助!添加
get\u absolute\u url
成功了。您是如何为get\u absolute\u url函数编码的?@sly\u Chandan最简单的方法应该返回类似
f”/posts/{self.id}“
,基本上是指向您对象的url路径,或者您可以使用该方法构造它,该方法基于您的url创建它。谢谢您的帮助!添加
get\u absolute\u url
成功了。您是如何为get\u absolute\u url函数编码的?@sly\u Chandan最简单的方法应该返回类似
f”/posts/{self.id}“
,基本上是指向对象的url路径,或者您可以使用基于url创建它的方法来构造它。