Erstens: Die Pfadstruktur
Wenn Sie es nicht haben, müssen Sie den Middleware- Ordner in Ihrer App folgendermaßen erstellen :
yourproject/yourapp/middleware
Die Ordner-Middleware sollte sich im selben Ordner wie settings.py, urls, templates ... befinden.
Wichtig: Vergessen Sie nicht, die leere Datei __init__.py im Middleware-Ordner zu erstellen, damit Ihre App diesen Ordner erkennt
Zweitens: Erstellen Sie die Middleware
Jetzt sollten wir eine Datei für unsere benutzerdefinierte Middleware erstellen. In diesem Beispiel möchten wir eine Middleware verwenden, die die Benutzer anhand ihrer IP- Adresse filtert. Wir erstellen eine Datei mit dem Namen filter_ip_middleware.py im Middleware- Ordner mit folgendem Code:
class FilterIPMiddleware(object):
def process_request(self, request):
allowed_ips = ['192.168.1.1', '123.123.123.123', etc...]
ip = request.META.get('REMOTE_ADDR')
if ip not in allowed_ips:
raise Http403
return None
Drittens: Fügen Sie die Middleware in unserer 'settings.py' hinzu.
Wir müssen suchen nach:
MIDDLEWARE_CLASSES
(Django <1,10)
MIDDLEWARE
(django> = 1,10)
Innerhalb der settings.py und dort müssen wir unsere Middleware hinzufügen ( an der letzten Position hinzufügen ). Es sollte so sein:
MIDDLEWARE = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'yourapp.middleware.filter_ip_middleware.FilterIPMiddleware'
)
Erledigt ! Jetzt ruft jede Anfrage von jedem Client Ihre benutzerdefinierte Middleware auf und verarbeitet Ihren benutzerdefinierten Code!