### last item in urlpatterns in urls.py (r'^(?P(.*))/$', 'myproject.myapp.views.pages') ### myview from django.http import Http404 from django.shortcuts import get_object_or_404 def pages(request, full_slug): slugs = full_slug.split('/') page_slug = slugs[-1] page = get_object_or_404(Page,slug=page_slug) if not page.get_absolute_url().strip('/') == full_slug: raise Http404 ### if you reach this line, you've found the page ### in page model def get_absolute_url(self): url = "/%s/" % self.slug page = self while page.parent: url = "/%s%s" % (page.parent.slug,url) page = page.parent return url