Django custom error pages
# urls.py
from django.conf.urls import (
    handler400, handler403, handler404, handler500
)
handler400 = 'my_app.views.bad_request'
handler403 = 'my_app.views.permission_denied'
handler404 = 'my_app.views.page_not_found'
handler500 = 'my_app.views.server_error'
# ...
# views.py
from django.shortcuts import (
    render_to_response
)
from django.template import RequestContext
# HTTP Error 400
def bad_request(request):
    response = render_to_response(
        '400.html',
        context_instance=RequestContext(request)
    )
    
    response.status_code = 400
    
    return response
# ...