Sitemaps mit Django erstellen


Coding ,


Eine Sitemap ist nichts weiter als eine XML Datei auf dem Webserver, welche Suchmaschinen sagt wie sich Seiten geändert haben, und wie wichtig einzelne Seiten sind. Ausserdem kann man so Seiten Suchmaschinen geben, die evtl. nicht in den Index aufgenommen werden.


Zum Glück nimmt Django einem die Arbeit ab, so dass Sitemaps automatisch erzeugt werden können. Die Installation ist ziemlich simpel:

  • Das Modul ‘django.contrib.sitemaps’ zu den INSTALLED_APPS hinzufügen
  • Sicherstellen, dass ‘django.template.loaders.app_directories.load_template_source’ in den Template Loaders eingetragen ist
  • Sicherstellen, dass das sites framework aktiviert ist

Danach sind nur noch wenige Einträge in der Datei urls.py zu machen…

from django.conf.urls.defaults import *
from django.contrib.sitemaps import FlatPageSitemap, GenericSitemap
from mysite.blog.models import Entry
 
info_dict = {
    'queryset': Entry.objects.all(),
    'date_field': 'pub_date',
}
 
sitemaps = {
    'flatpages': FlatPageSitemap,
    'blog': GenericSitemap(info_dict, priority=0.6),
}
 
urlpatterns = patterns('',
    # ...
    (r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})
)

Mehr ist nicht zu machen :-)

Es ist sogar möglich, bei Aenderungen am Model Google zu pingen, so dass die Sitemaps neu eingelesen werden…

from django.contrib.sitemaps import ping_google
 
class Entry(models.Model):
    # ...
    def save(self):
        super(Entry, self).save()
        try:
            ping_google()
        except Exception:
            # Bare 'except' because we could get a variety
            # of HTTP-related exceptions.
            pass


Kommentar hinzufügen