When working with Django in DEBUG mode, it can be tough to see your 403, 404, and 500 views, since they raise visible stack traces instead of the UX the end user will see. But if you turn DEBUG off, runserver’s local media serving is disabled because it’s designed to work only with DEBUG = True
. The solution is scattered throughout the Django docs, and I couldn’t find it compiled into one compact code block anywhere – just reference the handling functions directly from the end of your urls.py:
if settings.DEBUG: from django.views.defaults import server_error, page_not_found, permission_denied urlpatterns += [ url(r'^500/$', server_error), url(r'^403/$', permission_denied, kwargs={'exception': Exception("Permission Denied")}), url(r'^404/$', page_not_found, kwargs={'exception': Exception("Page not Found")}), ]
And voila, your 403.html, 404.html, and 500.html
templates will be displayed in full glory for developers.