According to the documentation this should be fairly simple: I just need to define handler404
. Currently I am doing, in my top urls.py
:
urlpatterns = [
...
]
handler404 = 'myapp.views.handle_page_not_found'
The application is installed. The corresponding view is just (for the time being I just want to redirect to the homepage in case of 404):
def handle_page_not_found(request):
return redirect('homepage')
But this has no effect: the standard (debug) 404
page is shown.
The documentation is a bit ambiguous:
handler404
be defined? The documentation says in the URLconf
but, where exactly? I have several applications, each with a different urls.py
. Can I put it in any of them? In the top URLconf
? Why? Where is this documented?django.http.Http404
, django.http.HttpResponseNotFound
, django.http.HttpResponse
(with status=404
)?As we discussed, your setup is correct, but in settings.py you should make DEBUG=False
. It's more of a production feature and won't work in development environment(unless you have DEBUG=False
in dev machine of course).