Benutzerdefinierte Django 404 Fehler
Habe ich eine 404.html Seite, aber in einigen Fällen möchte ich in der Lage sein senden Sie eine json-Fehlermeldung (für 404 und 500, etc.). Ich Lesen Sie die folgende Seite:
https://docs.djangoproject.com/en/dev/topics/http/views/#the-404-page-not-found-view
Gibt es eine Art Beispiel zeigt, dass die Umsetzung? Ich habe es in meinem urls.py aber es ist nicht abgeholt wird, die im Falle eines Fehlers.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser arbeitete für mich:
Können Sie es tun alles, wie Sie wollen, wenn man zu diesem controller.
Zusätzlich zu den bisherigen zu beantworten, ist es wichtig zu sagen, dass die views.py sollte die Rückkehr einer HttpResponse mit einem 404 status im http-header. Es ist wichtig zu informieren, dass Suchmaschinen die aktuelle Seite ist 404. Spammer manchmal erzeugt eine Menge von urls, die vorkommen könnte, dass würde führen Sie zu einem Platz, aber dann dient Sie einem anderen Inhalt. Sie Häufig viele verschiedene Adressen dienen Sie fast die exakt gleichen Inhalt. Und weil es nicht benutzerfreundlich ist, die meisten SEO-guide lines-zu bestrafen, dass. Also, wenn Sie viele Adressen, die mit der gleichen pseudo-404-Inhalt, es könnte nicht gut Aussehen, um den crawling-Systeme von der Suche websites. Da von, dass Sie wollen, stellen Sie sicher, dass die Seite, die Sie dienen als eine benutzerdefinierte 404 hat einen 404-status. Hier ist es also ein guter Weg zu gehen:
In Ihrer Anwendung urls.py hinzufügen:
In Ihrer Anwendung views.py hinzufügen:
Das Geheimnis liegt in der letzten Zeile: status=404
Hoffe, es half!
Ich freue mich zu sehen, die Gemeinschaft Eingänge zu diesem Ansatz. =)
website
und eine appblog
. Dann sollten Siehandler404
imwebsite.urls.py
nichtblog.urls.py
Grundlagen:
Definieren benutzerdefinierte Ansicht für das handling von 404 Fehlern, definieren Sie in der URL-config, eine Ansicht für handler404, wie
handler404 = 'views.error404'
Abgesehen von den Grundlagen, einige Dinge zu beachten, über (benutzerdefinierte 404 views):
Debug=False
- Modus.Und mehr ignoriert, eine, über die meisten Antworten (und dieser steckte mein Gehirn aus).
404 view standardmäßig
Beachten Sie die parameter
exception
War dies verursacht einen 404-500-Weiterleitung von innerhalb
def get_exception_response(self, request, resolver, status_code, exception)
definierte Funktioncore.handlers.base
da er nicht finden konnte, die parameterexception
Debug = False
. Ich konnte nicht finden, dass dies in anderen SO Antworten. Diese variable sollte gesetzt werden, mit Hilfe von Umgebungsvariablen und retrived alsbool(os.getenv("DEBUG"))