Merge pull request #384 from ThomasWaldmann/simple-error-views
use error views without templating, fixes #365
This commit is contained in:
commit
c93daae899
@ -1,7 +0,0 @@
|
|||||||
{% extends "errorpage.html" %}
|
|
||||||
|
|
||||||
{% block error %}
|
|
||||||
<h1>400 Bad Request</h1>
|
|
||||||
|
|
||||||
This kind of request is not allowed here.
|
|
||||||
{% endblock %}
|
|
@ -1,9 +0,0 @@
|
|||||||
{% extends "errorpage.html" %}
|
|
||||||
|
|
||||||
{% block error %}
|
|
||||||
<h1>403 Forbidden</h1>
|
|
||||||
|
|
||||||
Sorry, this is not allowed (for you).
|
|
||||||
|
|
||||||
If you did not log in yet, try logging in.
|
|
||||||
{% endblock %}
|
|
@ -1,7 +0,0 @@
|
|||||||
{% extends "errorpage.html" %}
|
|
||||||
|
|
||||||
{% block error %}
|
|
||||||
<h1>404 Not found</h1>
|
|
||||||
|
|
||||||
Nothing to see here.
|
|
||||||
{% endblock %}
|
|
@ -1,7 +0,0 @@
|
|||||||
{% extends "errorpage.html" %}
|
|
||||||
|
|
||||||
{% block error %}
|
|
||||||
<h1>500 Internal Server Error</h1>
|
|
||||||
|
|
||||||
Sorry, we screwed up. Try again later. :(
|
|
||||||
{% endblock %}
|
|
@ -1,14 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>{{ WWW_HOST }} - something went wrong...</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
{% block error %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
<a href="{% url 'home' %}">Back to {{ WWW_HOST }}.</a>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -2,11 +2,14 @@
|
|||||||
top-level url dispatching
|
top-level url dispatching
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls import include, url
|
from django.conf.urls import include, url
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.auth import views as auth_views
|
from django.contrib.auth import views as auth_views
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
|
from django.http import HttpResponse
|
||||||
|
|
||||||
|
|
||||||
def remember_me_login(request, *args, **kw):
|
def remember_me_login(request, *args, **kw):
|
||||||
@ -35,3 +38,51 @@ if settings.DEBUG:
|
|||||||
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
||||||
import debug_toolbar
|
import debug_toolbar
|
||||||
urlpatterns += [url(r'^__debug__/', include(debug_toolbar.urls)), ]
|
urlpatterns += [url(r'^__debug__/', include(debug_toolbar.urls)), ]
|
||||||
|
|
||||||
|
|
||||||
|
# we have expensive context processors and do not want to invoke them for the
|
||||||
|
# http error views, so we must not use templates (nor the django default views).
|
||||||
|
|
||||||
|
def http_error(request, status, exception=None):
|
||||||
|
if exception is not None:
|
||||||
|
exception_repr = exception.__class__.__name__
|
||||||
|
# Try to get an "interesting" exception message:
|
||||||
|
try:
|
||||||
|
message = exception.args[0]
|
||||||
|
except (AttributeError, IndexError):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if isinstance(message, six.text_type):
|
||||||
|
exception_repr = message
|
||||||
|
else:
|
||||||
|
# we do not have an exception for 500
|
||||||
|
exception_repr = 'Server Error'
|
||||||
|
body = """\
|
||||||
|
<h1>%(exception)s (error %(status)d)</h1>
|
||||||
|
""" % dict(
|
||||||
|
exception=exception_repr,
|
||||||
|
status=status,
|
||||||
|
)
|
||||||
|
return HttpResponse(body, content_type='text/html', status=status)
|
||||||
|
|
||||||
|
|
||||||
|
def bad_request(request, exception, template_name=None):
|
||||||
|
return http_error(request, 400, exception)
|
||||||
|
|
||||||
|
|
||||||
|
def permission_denied(request, exception, template_name=None):
|
||||||
|
return http_error(request, 403, exception)
|
||||||
|
|
||||||
|
|
||||||
|
def page_not_found(request, exception, template_name=None):
|
||||||
|
return http_error(request, 404, exception)
|
||||||
|
|
||||||
|
|
||||||
|
def server_error(request, template_name=None):
|
||||||
|
return http_error(request, 500)
|
||||||
|
|
||||||
|
|
||||||
|
handler400 = 'nsupdate.urls.bad_request'
|
||||||
|
handler403 = 'nsupdate.urls.permission_denied'
|
||||||
|
handler404 = 'nsupdate.urls.page_not_found'
|
||||||
|
handler500 = 'nsupdate.urls.server_error'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user