2012-12-17 11 views
8

Sto riscontrando un problema nell'implementare le sitemap nella mia applicazione. Sto usando Virtualenv, django 1.4 e Python 2.7. Gradirei se tu mi possa aiutare a risolvere questo.Implementazione di sitemap in Django

Questo è quello che ho fatto:

  1. Nel mio urls.py

    from sitemap import JobPostSitemap 
    sitemaps = { 
        'jobs': JobPostSitemap, 
    } 
    ... # Removed other urls 
    url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}), 
    
  2. Poi nel mio file sitemap.py

    from django.contrib.sitemaps import Sitemap 
    from jobs.models import JobPost 
    
    class JobPostSitemap(Sitemap): 
        changefreq = "never" 
        priority = 0.5 
    
        def items(self): 
         return JobPost.objects.filter(approved=True) 
    
        def lastmod(self, obj): 
         return obj.pub_date 
    
  3. mio settings.py il file è il seguente:

    TEMPLATE_LOADERS = (
        'django.template.loaders.filesystem.Loader', 
        'django.template.loaders.app_directories.Loader', 
    ) 
    ... 
    INSTALLED_APPS = ( 
        'django.contrib.auth', 
        'django.contrib.contenttypes', 
        'django.contrib.sessions', 
        'django.contrib.sites', 
        'django.contrib.messages', 
        'django.contrib.staticfiles', 
        'django.contrib.sitemaps', 
        'jobs', 
    ) 
    ... 
    

Ora, quando apro il mio browser e passare alla http://localhost:8000/sitemap.xml, ottengo il seguente errore:

ImportError at /sitemap.xml 

No module named django.contrib.sitemaps 
Request Method: GET 
Request URL: http://localhost:8000/sitemap.xml 
Django Version: 1.4.2 
Exception Type: ImportError 
Exception Value:  
No module named django.contrib.sitemaps 
Exception Location: /home/frank/Projects/python/django/techjobsea.com/baseline27/local/lib/python2.7/site-packages/Django-1.4.2-py2.7.egg/django/utils/importlib.py in import_module, line 35 
Python Executable: /home/frank/Projects/python/django/techjobsea.com/baseline27/bin/python 
Python Version: 2.7.3 

io non riesco a capire quello che ho perso o facendo male.

+0

Hai seguito tutti i passaggi di installazione richiesti per 'sitemap'? I passaggi richiesti [qui] (https://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/) – doru

+0

@doru Sì. Ho seguito tutti i passaggi. – Frankline

+0

Hai trovato una soluzione? –

risposta

17

Ho avuto errore simile. Ho cambiato la definizione di urls.py in questo modo:

from sitemap import JobPostSitemap 
from django.contrib.sitemaps.views import sitemap 
sitemaps = { 
    'jobs': JobPostSitemap, 
} 
... # Removed other urls 
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}), 

e ha funzionato per me. Non so perché ...

+0

Amico, questo ha funzionato davvero. Grazie. Sarò interessato a sapere perché questo funziona in contrasto con l'altro metodo. Sweeet! – Frankline

+1

La chiamata 'patterns' ha un parametro' prefisso' non vuoto? Qualcosa come 'urlpatterns = patterns ('some.prefix', url (r '...'), ....)'? Questo potrebbe essere stato il tuo problema. – naktinis

-2

Per attivare generazione sitemap sul tuo sito Django, aggiungere questa linea al vostro URLconf:

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

Questo dice Django per costruire una mappa del sito, quando un client accede /sitemap.xml.

+1

Com'è diverso da quello che ha già? – piokuc

0

Potrebbe trattarsi di un problema PYTHONPATH. Esegui python manage.py shell e prova a import django.contrib.sitemaps

+0

L'ho fatto. Nessun errore. – Frankline

0

Il problema risiede probabilmente nella configurazione url.py che non hai inviato interamente. Nel mio caso ho inavvertitamente lasciato un prefisso del modulo: urlpatterns = patterns('...') che impediva a Django di trovare la strada giusta.

+0

Grazie, ma ho incluso quella sezione. Tutti gli URL funzionano bene tranne la sitemap. – Frankline