Zgodnie z documentation powinno to być dość proste: wystarczy zdefiniować handler404
. Obecnie robię w moim top urls.py
:Jak poprawnie skonfigurować niestandardowy handler404 w django?
urlpatterns = [
...
]
handler404 = 'myapp.views.handle_page_not_found'
Aplikacja jest zainstalowana. Odpowiedni widok jest po prostu (na razie po prostu chcę, aby przekierować do strony głównej w przypadku 404):
def handle_page_not_found(request):
return redirect('homepage')
Ale to nie ma znaczenia: średnia (debug) 404
strona jest pokazana.
Dokumentacja jest nieco dwuznaczne:
- gdzie powinien
handler404
być zdefiniowane? Dokumentacja mówi wURLconf
, ale gdzie dokładnie? Mam kilka aplikacji, każda z inną wersjąurls.py
. Czy mogę umieścić to w którymś z nich? W góręURLconf
? Czemu? Gdzie jest to udokumentowane? - co zostanie przechwycone przez tego przewodnika? Czy to złapie
django.http.Http404
,django.http.HttpResponseNotFound
,django.http.HttpResponse
(zstatus=404
)?
Co to jest "DEBUG" w ustawieniach? Jeśli jest to "Prawda", czy możesz zmienić go na "Fałsz" i zobaczyć? –
@ShangWang: dzięki! Rzeczywiście, ustawienie go na "Fałsz" rozwiązuje problem. To nie jest udokumentowane, afaik. – dangonfast
@delavnog - Znajduje się w sekcji [raportowanie błędów] (https://docs.djangoproject.com/en/1.9/howto/error-reporting/#error-reporting) - "Kiedy DEBUG jest fałszywy, ..." – Sayse