2017-03-24 2 views
0

Cette erreur m'empêche de progresser. Suivi configuration standard pour un plan du site et obtenu l'erreur suivante:Sitemap Django: l'objet 'module' n'a pas d'attribut 'get_urls'

AttributeError at /sitemap.xml 

'module' object has no attribute 'get_urls' 

mon urls.py:

from django.conf.urls import url, include 
from django.contrib import admin 
from django.contrib.sitemaps.views import sitemap 
import blog.views as PostSiteMap 
sitemaps ={ 
    'post' : PostSiteMap 
} 
urlpatterns = [ 

    url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, 
    name='django.contrib.sitemaps.views.sitemap') 
] 

views.py:

class PostsSiteMap(Sitemap): 
    changefreq = "daily" 
    priority = 1.0 
    def items(self): 
     return Post.objects.all() 

    def lastmod(self, obj): 
     return obj.date 

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

Poster models.py:

class Post(models.Model): 
title = models.CharField(max_length = 140) 
body = RichTextUploadingField() 
date = models.DateTimeField() 
tags = models.ManyToManyField('Tags') 
thumbnail = models.ImageField(upload_to="images/", null = False , default='images/place.png', blank = True, width_field="width_field", 
     height_field="height_field") 
height_field = models.IntegerField(default = 0, null = True, blank = True) 
width_field = models.IntegerField(default = 0, null = True, blank = True) 

def __str__(self): 
    return self.title 

def recent_posts(self): 
    d = datetime.utcnow().replace(tzinfo=pytz.UTC) - timedelta(days=30) 
    if self.date > d: 
     return True 
    else: 
     return False 

def get_absolute_url(self): 
    return "/blog/%i/" % self.pk 

quelqu'un a des idées pourquoi? Merci!

+0

Chaque fois que j'utilise le module Plan du site I Mettez-le dans essayer & sauf clause. Après l'exception mis put (sys.exc_info() [0]) qui peut vous donner une indication de ce qui se passe –

+0

La réponse ci-dessous vous a-t-elle aidé à résoudre votre problème? –

Répondre

0

L'erreur que vous obtenez est devrait le fait que vous passez dans le dictionnaire sitemaps, le module PostSiteMap lui-même au lieu de la classe PostsSiteMap réelle (qui vit à l'intérieur du module PostSiteMap). Tout d'abord, vos sitemaps doivent vivre dans un fichier séparé appelé sitemap.py (c'est juste une convention et une bonne pratique). Ce fichier doit être au même niveau que wsgi.py, settings.py etc, car il concerne le sitemap de l'ensemble du projet (c'est pourquoi il s'appelle sitemap!).

Dans votre views.py (qui définissent la classe PostsSiteMap), vous devriez juste quelque chose comme ceci:

# blog/views.py 

class PostsSiteMap(Sitemap): 
    # your code as is 

# This dictionary outside the class definition 
SITEMAPS = { 
    'post': PostsSiteMap, 
} 

Maintenant, dans votre urls.py écrire ceci:

# urls.py 

from django.conf.urls import url, include 
.... 
from blog.views import SITEMAPS 

urlpatterns = [ 
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': SITEMAPS}, name='django.contrib.sitemaps.views.sitemap') 
] 
+0

oui! cela a fonctionné! Merci beaucoup –