2016-12-31 4 views
1

Es gibt ein seltsames Problem. Wenn ich das mag,Benutzerdefinierte Fehler 400/500 Seite in Django

def error_page(request): 
    return HttpResponseBadRequest 

es löst Meine benutzerdefinierte Fehlerseite, die ich in der Haupt-URLconf aufgeführt. Aber wenn ich passiere und Ausnahme dort - ich habe nur eine leere Seite mit dem Text der Ausnahme. Zum Beispiel ist eine Ansicht etwa wie folgt:

def error_page(request): 
    return HttpResponseBadRequest('The error text') 

Und ich eine leere Seite mit dem „Der Fehlertext“ Text im Körper, aber meine benutzerdefinierte Fehlerseite nicht. Wie kann ich Django dazu bringen, meine Fehlerseite zu verwenden, aber mit Fehlertext?

Ich verwende Python 3.5 und Django 1.10.4

Antwort

0

Sie können zum Erstellen von benutzerdefinierter Fehlerseite den folgenden Link verweisen. https://docs.djangoproject.com/en/1.10/ref/contrib/messages/

views.py

from django.contrib import messages 


def foo(request): 
    # Some view where you want to throw error 
    messages.add_message(request, messages.ERROR, 'Something Not Wrong') 
    raise Http404() 

Und in Vorlage, die Sie die Nachricht in th Vorlage laden können: Django, creating a custom 500/404 error page

Für benutzerdefinierte Message-Passing können Sie django Nachrichten

Siehe verwenden

in 400.html

{% if messages %} 
<ul class="messages"> 
    {% for message in messages %} 
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> 
    {% endfor %} 
</ul> 
{% endif %} 

Vergessen Sie nicht DEBUG = False und ALLOWED_HOSTS = ['localhost'] in settings.py sonst Django eingestellt wird den Fehler fangen.

+0

Also, das ist kein Fehler oder etwas? Weil ich dachte, dass es eine andere Möglichkeit gibt, dieses Problem zu lösen, als eigene Ansichten zu erstellen, um mit der Fehlermeldung umzugehen – Deathik

Verwandte Themen