Skip to main content

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 image
  • title - 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:

Image preview:

500-error

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

django_custom_error_views-0.3.0.tar.gz (572.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_custom_error_views-0.3.0-py3-none-any.whl (112.9 kB view details)

Uploaded Python 3

File details

Details for the file django_custom_error_views-0.3.0.tar.gz.

File metadata

File hashes

Hashes for django_custom_error_views-0.3.0.tar.gz
Algorithm Hash digest
SHA256 1061b670a274d5bb97ba3859bf80a4f5024a0e60d17382e330d443ec5f30cc85
MD5 dc561c778b2355e2d4a618a9394c66cb
BLAKE2b-256 bd0b0d2433c5eeaa901c355511e4ca55149533335f1a0e82473ec2b458c91558

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_custom_error_views-0.3.0.tar.gz:

Publisher: ci-cd.yml on adinhodovic/django-custom-error-views

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_custom_error_views-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_custom_error_views-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 359b4082ed0c3fbb3c6fdcb648ac215411f762b4e60dd99a6c9f6e43a1759c8d
MD5 3bb73e3e7a2e8c6bc504b99ccdd2cf67
BLAKE2b-256 f1b13d889a0666c79fd7aaf64d1bd31d2242c599251fbca3991a13291bd18ab3

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_custom_error_views-0.3.0-py3-none-any.whl:

Publisher: ci-cd.yml on adinhodovic/django-custom-error-views

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page