Настройка карты сайта с помощью 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 для вашего объекта. Это должно помочь вам.

Другие вопросы по тегам