Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mherrmann/django-404-middleware
An alternative to Django's BrokenLinkEmailsMiddleware
https://github.com/mherrmann/django-404-middleware
django python python3
Last synced: about 1 month ago
JSON representation
An alternative to Django's BrokenLinkEmailsMiddleware
- Host: GitHub
- URL: https://github.com/mherrmann/django-404-middleware
- Owner: mherrmann
- License: mit
- Created: 2019-03-11T07:45:57.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-03-25T06:02:51.000Z (over 4 years ago)
- Last Synced: 2024-09-16T05:05:14.328Z (2 months ago)
- Topics: django, python, python3
- Language: Python
- Size: 23.4 KB
- Stars: 19
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- stars - mherrmann/django-404-middleware - An alternative to Django's BrokenLinkEmailsMiddleware (Python)
- stars - mherrmann/django-404-middleware - An alternative to Django's BrokenLinkEmailsMiddleware (Python)
README
# Django 404 Middleware
Django's
[BrokenLinkEmailsMiddleware](https://docs.djangoproject.com/en/2.1/howto/error-reporting/#errors)
can email you about broken links on your site:```
Broken link on mysite.com
=========================
Referrer: https://www.google.com
Requested URL: /nonexistent
User agent: Mozilla/5.0 (...)
IP address: 1.2.3.4
```The problem is, these emails often contain false positives. To tell Django to
ignore particular broken links, you need to change the setting
`IGNORABLE_404_URLS`. This quickly becomes tedious.This library is a drop-in replacement for `BrokenLinkEmailsMiddleware`. It sends
the same emails, but is configured via the database (and Django's Admin
interface) instead of a setting. This makes it much easier to mark URLs as
ignorable.When a broken URL is encountered, this library adds a link to the bottom of the
404 email:```
Broken link on mysite.com
=========================
...To ignore this link, visit mysite.com/admin/...
```Clicking on the link opens Django's Admin interface with a pre-filled form for
ignoring the 404:![Add](Screenshot.png?raw=true "Optional Title")
Just click _Save_ to never be notified of this particular false positive again.
## Installation
Install this library via:
pip install django-404-middleware
Add it to the `INSTALLED_APPS` in your Django settings file:
```
INSTALLED_APPS = [
...,
'django_404_middleware'
]
```Also add it to your `MIDDLEWARE` setting. Typically, you would already have an
entry `django.middleware.common.BrokenLinkEmailsMiddleware`. Replace it by the
following:```
MIDDLEWARE = [
...,
'django_404_middleware.BrokenLinkEmailsDbMiddleware',
...
]
```(Note that if you are using Django < 2, the setting is called
`MIDDLEWARE_CLASSES`, not `MIDDLEWARE`.)The same caveat as for Django's built-in 404 middleware applies:
`BrokenLinkEmailsDbMiddleware` must appear before other middleware that
intercepts 404 errors. Put it towards the top of your `MIDDLEWARE` setting.Finally, apply migrations to initialise the database:
python manage.py migrate
## Caveats
The current implementation is not optimized for performance in any way.