Sitemap class for direct-to-template generic views
If your Django site contains pages implemented with direct-to-template generic views, this Sitemap class makes it easy to add them to your sitemap.
import datetime
from django.contrib.sitemaps import Sitemap
class DirectToTemplateSitemap(Sitemap):
changefreq = "daily"
def __init__(self, patterns):
self.patterns = patterns
def items(self):
return [p for p in self.patterns if p.callback
and p.callback.__module__ == 'django.views.generic.simple'
and p.callback.func_name == 'direct_to_template']
def changefreq(self, obj):
return 'daily'
def lastmod(self, obj):
return datetime.datetime.now()
def location(self, obj):
url = obj.regex.pattern.replace('^', '/').replace('$','')
return url
To use it, put something like this in your urls.py:
from dttsitemap import DirectToTemplateSitemap
sitemaps = {
'pages' : DirectToTemplateSitemap(urlpatterns),
}
urlpatterns += patterns('',
(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})
)
Comments have been turned off for this article, but you can always contact us about it.