""" views.py """ from django.views.generic.base import View from django.template.response import TemplateResponse from django.template.base import TemplateDoesNotExist from django.http import Http404 class PageView(View): def get(self, request, *args, **kwargs): slug = kwargs['slug'] # Fallback to search a index page if url ends with '/' slug = '%sindex' % slug if slug.endswith('/') else slug template = 'pages/%s.html' % slug response = TemplateResponse(request, template, {}) # test if the template exists before the common middleware # try to automatically render the response try: response.resolve_template(template) except TemplateDoesNotExist: raise Http404('Page "%s" is not found' % slug) return response """ urls.py """ from django.conf.urls import patterns, url from project.pages import views urlpatterns = patterns('', url(r'^(?P.+)$', views.PageView.as_view()), url(r'^$', views.PageView.as_view(), {'slug':'welcome'}) # Easy to add aliases )