我在使用站点地图时遇到了一些问题。
urls.py
from django.contrib import sitemaps
from oportunidade.views import OportunidadeSitemap
sitemaps = {'oportunidade': OportunidadeSitemap}
...
url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
views.py
...
class OportunidadeSitemap(Sitemap):
changefreq = "never"
priority = 0.5
def items(self):
return Oportunidade.objects.filter(ativo=True)
def lastmod(self, obj):
return obj.ultima_alteracao
但是当我访问http://localhost:8000/sitemap.xml时出现以下错误 'Oportunidade'对象没有属性'get_absolute_url'
这是我的“Oportunidade”模型:
class Oportunidade(models.Model):
user = models.ForeignKey(User)
titulo = models.CharField('Titulo',max_length=31)
...
def __unicode__(self):
return self.titulo
我很困惑如何设置站点地图。
答案 0 :(得分:1)
根据文档:https://docs.djangoproject.com/en/1.3/ref/contrib/sitemaps/#sitemap-class-reference
如果您没有为sitemap类提供位置,它将在每个对象上查找get_absolute_url。
因此,您需要在sitemap类上指定location属性,或者在对象上指定get_absolute_url。这应该让你去。
答案 1 :(得分:1)
请查看Django's sitemap class reference。虽然您实施了必要的items
方法,但您似乎缺少站点地图中的location
方法(或属性)或模型类中的get_absolute_url
方法。
如果未提供
location
,框架将在items()返回的每个对象上调用get_absolute_url()
方法。
最简单的方法是在get_absolute_url()
模型类中实施Oportunidade
。