[Django]-Custom Django 404 page and Django debug page

7👍

You can define your own handler-view for 404s, by setting handler404 in your urlconf. The default handler404 is django.views.defaults.page_not_found, which basically just renders the 404.html template.

If you put this in your urlconf, it will show the “technical” 404 response (the nice yellow page) for a certain IP, and use Django’s default 404-production view for other IPs:

import sys
from django.views.debug import technical_404_response
from django.views.defaults import page_not_found

def handler404(request):
    if request.META['REMOTE_ADDR'] == 'YOUR_IP_ADDRESS':
        exc_type, exc_value, tb = sys.exc_info()
        return technical_404_response(request, exc_value)
    else:
        return page_not_found(request)

I would advise you to set up proper logging for you 404 errors. Django can e-mail or log 404s and exceptions for you that happens in your production environment for rules that you can specify.

See the documentation on error reporting and logging (The logging framework was added in 1.3)

Leave a comment