Настройка карты сайта с помощью Django
У меня есть некоторые проблемы с картами сайта.
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
Я очень запутался, как установить карту сайта.
2 ответа
Пожалуйста, взгляните на ссылку на класс карты сайта Django. Хотя вы реализуете необходимое items
метод, вы, кажется, отсутствует либо location
метод (или атрибут) в вашей карте сайта или get_absolute_url
метод в вашей модели класса.
Если
location
не предусмотрено, рамки будут вызыватьget_absolute_url()
метод для каждого объекта, возвращаемый items().
Самый простой способ продвинуться вперед - это реализовать get_absolute_url()
в тебе Oportunidade
Модельный класс.
Согласно документам: https://docs.djangoproject.com/en/1.3/ref/contrib/sitemaps/
Если вы не предоставите местоположение для класса sitemap, он будет искать get_absolute_url для каждого объекта.
Таким образом, вам нужно либо указать свойство location в вашем классе карты сайта, либо get_absolute_url для вашего объекта. Это должно помочь вам.