Python Django网站地图';邮政';对象没有属性';获取绝对url';?
我正在创建一个简单的django 1.9应用程序,其中包括一个博客,我希望该网站拥有由网站页面和博客文章条目组成的网站地图。到目前为止,我能够构建一个网站地图,将静态页面生成为网站地图,但博客文章网站地图给了我一个错误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
“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创建它的方法来构造它。