Skip to content

Instantly share code, notes, and snippets.

@conformist-mw
Last active April 4, 2021 09:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save conformist-mw/5c70236f8c445025af67ea17438e2c7e to your computer and use it in GitHub Desktop.
Save conformist-mw/5c70236f8c445025af67ea17438e2c7e to your computer and use it in GitHub Desktop.
django custom error pages
{% extends 'errors/base_error.html' %}
{% block error_class %}is-danger{% endblock %}
{% block error_title %}500 Internal Server error{% endblock %}
{% block error_subtitle %}Something awful just happened. Don't do this again.{% endblock %}
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}Error{% endblock %}</title>
<script src="{% static 'js/fa.js' %}"></script>
<link rel="stylesheet" href="{% static 'css/bulma.min.css' %}">
<script src="{% static 'js/bulma/navbar.js' %}"></script>
{% block extra_head %}{% endblock %}
</head>
<body>
{% include 'messages.html' %}
<section class="hero is-fullheight {% block error_class %}is-warning{% endblock %}">
{% include 'nav.html' %}
<div class="hero-body">
<div class="container">
<h1 class="title">{% block error_title %}{% endblock %}</h1>
<h2 class="subtitle">{% block error_subtitle %}{% endblock %}</h2>
</div>
</div>
</section>
</body>
</html>
CSRF_FAILURE_VIEW = 'apps.core.views.csrf_failure'
handler400 = 'apps.core.views.handler400'
handler403 = 'apps.core.views.handler403'
handler404 = 'apps.core.views.handler404'
handler500 = 'apps.core.views.handler500'
from django.shortcuts import render
def handler400(request, exception, template_name='errors/400.html'):
response = render(request, template_name)
response.status_code = 400
return response
def handler403(request, exception, template_name='errors/403.html'):
response = render(request, template_name)
response.status_code = 403
return response
def handler404(request, exception, template_name='errors/404.html'):
response = render(request, template_name)
response.status_code = 404
return response
def handler500(request, template_name='errors/500.html'):
response = render(request, template_name)
response.status_code = 500
return response
def csrf_failure(request, reason=''):
response = render(request, 'errors/403_csrf.html')
response.status_code = 403
return response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment