Static sitemaps

Static sitemaps is small pluggable Django application that wraps around the django.contrib.sitemaps framework. It’s basic purpose is to enable serving of sitemap files through your webserver and not Django application itself.

This has reasonable performance advantages.

This app also gives you Django management command which will generate sitemap files along with sitemap index file to your MEDIA_URL base path.

Installation

First, it is necessary to add the application to your INSTALLED_APPS as usual:

INSTALLED_APPS = (
    ...
    'fragapy.static_sitemaps',
    ...
)

Second, you need to add one URL that will serve the Sitemap index file (sitemap.xml). It goes like this:

urlpatterns = patterns('',
    url(r'^sitemap.xml', include('fragapy.static_sitemaps.urls')),
)

This will ensure that /sitemap.xml will be handled by static_sitemaps view. This step can be avoided if you serve your media files from the same domain as your Django aplication lives on. In that case, you already have /sitemap.xml available.

If that’s not the case (e.g. you media files live on different domain than the application itself, like a subdomain or so) you should have this URL set up so that /sitemap.xml is still available.

Next step is some small configuration. Put these into your settings file. There are several configuration variables available:

STATICSITEMAPS_ROOT_SITEMAP

This needs to point to the sitemap info dict which is used in common sitemaps framework, e.g.:

from iw.charts.sitemaps import sitemaps as charts_sitemaps
from iw.iwapp.sitemaps import sitemaps as iwapp_sitemaps

sitemaps = {}
sitemaps.update(iwapp_sitemaps)
sitemaps.update(charts_sitemaps)

In this example, we want to point our STATICSITEMAPS_ROOT_SITEMAP to the sitemaps variable, e.g.:

STATICSITEMAPS_ROOT_SITEMAP = 'iw.sitemaps.sitemaps'

The infodict contents are supposed to be same as for common sitemaps framework. We simply use the same classes.

STATICSITEMAPS_SITEMAP_DOMAIN
This variable needs to be set to the domain on which the sitemaps files will be held. If you serve your media files from http://media.web.com, this should be set to this URL.
STATICSITEMAPS_USE_GZIP
This defaults to True. Keep this unchanged if you want your sitemap files to be gzipped which is definitely beneficial and it is allowed in docs on sitemaps.org.
STATICSITEMAPS_FILENAME_TEMPLATE
There is usually no need to change this.

CRON job to generate sitemaps

To generate sitemap files, we recommend using CRON job. There is a management command that will refresh the sitemap files, usage is very simple:

django-admin.py refresh_sitemap

After it finishes, it also pings google so that it will know that sitemap has been updated.

Project Versions

Table Of Contents

Previous topic

Soft deletable models

Next topic

Unix tools

This Page