Primero: la estructura del camino
Si no lo tiene, debe crear la carpeta de middleware dentro de su aplicación siguiendo la estructura:
yourproject/yourapp/middleware
El middleware de la carpeta debe colocarse en la misma carpeta que settings.py, urls, templates ...
Importante: no olvide crear el archivo vacío __init__.py dentro de la carpeta de middleware para que su aplicación reconozca esta carpeta
Segundo: crea el middleware
Ahora deberíamos crear un archivo para nuestro middleware personalizado, en este ejemplo supongamos que queremos un middleware que filtre a los usuarios según su IP, creamos un archivo llamado filter_ip_middleware.py dentro de la carpeta del middleware con este código:
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
Tercero: agregue el middleware en nuestro 'settings.py'
Necesitamos buscar:
MIDDLEWARE_CLASSES
(django <1,10)
MIDDLEWARE
(django> = 1,10)
Dentro de settings.py y allí necesitamos agregar nuestro middleware (Agréguelo en la última posición ). Debería ser como:
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'
)
Hecho ! ¡Ahora cada solicitud de cada cliente llamará a su middleware personalizado y procesará su código personalizado!