Prebuilt and customizable error views for Django.
Project description
Django Custom Error Views
Prebuilt and customizable error views for Django.
Features
- Responsive design suitable for device sizes from mobile to desktop.
- Supports 400,403,404 and 500 HTTP errors by default.
- Minimal setup required to render the templates.
- Customizable error views through Django settings using custom error handlers.
Installation
pip install django-custom-error-views
INSTALLED_APPS = [
"django_custom_error_views",
]
That's all! Now Django will by default use the templates from the package for 400, 403, 404 and 500 pages. However, if you want to customize the pages by adding a logo, changing text etc. Then you'll need the next section as well.
Customizing Error Pages
To customize the error pages you need to add a custom handler that injects context into the templates. Add the below snippet to your urls.py
.
from django.conf import settings
from django_custom_error_views.views import handler400 as ui_handler400
from django_custom_error_views.views import handler403 as ui_handler403
from django_custom_error_views.views import handler404 as ui_handler404
from django_custom_error_views.views import handler500 as ui_handler500
handler400 = "django_custom_error_views.views.handler400"
handler403 = "django_custom_error_views.views.handler403"
handler404 = "django_custom_error_views.views.handler404"
handler500 = "django_custom_error_views.views.handler500"
Add the below snippet to urls.py
to debug and visualize the error pages locally. This is optional.
# Optional
if settings.DEBUG:
# This allows the error pages to be debugged during development, just visit
# these url in browser to see how these error pages look like.
urlpatterns += [
path(
"400/",
ui_handler400,
kwargs={"exception": Exception("Bad Request!")},
),
path(
"403/",
ui_handler403,
kwargs={"exception": Exception("Permission Denied")},
),
path(
"404/",
ui_handler404,
kwargs={"exception": Exception("Page not Found")},
),
path("500/", ui_handler500),
]
And then you can add the following settings for each page.
DJANGO_CUSTOM_ERROR_VIEWS = {
"company_logo": "/images/icon.png", # Static image or full URL
"400": {
"title": "Custom 400 error.",
"description": "Custom 400 description.",
"extra_content": "400 extras.",
},
"403": {
"title": "Custom 403 Error.",
"description": "Custom 403 description.",
"extra_content": "403 extras.",
"render_exception": True,
},
"404": {
"title": "Custom 404 Error.",
"description": "Custom 404 description.",
"extra_content": "404 extras.",
"render_exception": True,
},
"500": {
"title": "Custom 500 Error.",
"description": "Custom 500 description.",
"extra_content": "500 extras.",
},
}
Each option does the following:
company_logo
- Adds a company logo to the top of the page. Either a static ({% static %}
) image or a full URL to an imagetitle
- Changes the title for the page to a custom one.description
- Changes the description for the error to a custom one.extra_content
- Adds extra text to the page below the title and description.render_exception
- Renders the exception that occurred in the page (only for 403/404 pages), by default it's hidden.
Preview
You can preview the error pages live at:
- 400 HTTP status code
- 403 HTTP status code
- 404 HTTP status code
- 500 HTTP status code - Has the status code 200 only in the demo.
Image preview:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_custom_error_views-0.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5277e60dc96fd92d2873c26f892e25c0455f9fb8ceed0fe6fe3b04e7cc31b99e |
|
MD5 | 340be2d1468c1a66225d8c35864602fe |
|
BLAKE2b-256 | 6b02d0603db84e1e2274b18ac5f3f0b3ae0b8aee8f6276d16d345b0f8dcb36fc |
Hashes for django_custom_error_views-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 504a4485f9e3e6a0b8848b136a0bea16a802170898e3836e6ba8a86da24b0ac5 |
|
MD5 | e93263765a6600bc23b09a2e61e094b0 |
|
BLAKE2b-256 | d3ae837940838ac47052b15e992863aa31272acc988d455a3a4b898ec38e3172 |