Simple Sitemap with django.contrib.sitemaps

A snippet showing how to build sitemaps in Django.


# models.py
from django.db import models
class Post(models.Model):
    slug = models.SlugField(unique=True)
    updated_at = models.DateTimeField(auto_now=True)
  

# admin.py
from django.contrib import admin
from .models import Post
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ("slug","updated_at")
  

# sitemaps.py
from django.contrib.sitemaps import Sitemap
from .models import Post
class PostSitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.5
    def items(self): return Post.objects.all()
    def location(self, obj): return f"/posts/{obj.slug}/"
    def lastmod(self, obj): return obj.updated_at

# urls.py
from django.contrib.sitemaps.views import sitemap
from .sitemaps import PostSitemap
sitemaps = {"posts": PostSitemap}
urlpatterns = [ path("sitemap.xml", sitemap, {"sitemaps": sitemaps}) ]
  
Explanation:
  • Install django.contrib.sitemaps and wire the view at /sitemap.xml.
  • Provide items(), location(), and optional lastmod.
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.