Vamos a hablar sobre Middleware en Django, por qué usarlos, cómo funciona y cómo crear middleware personalizado en Django.
En Django, el middleware es un complemento liviano que se procesa durante la ejecución de solicitudes y respuestas.
El middleware se utiliza para realizar una función en la aplicación. Las funciones pueden ser seguridad, sesión, protección CSRF, autenticación, etc.
Tipos de middleware
Hay dos tipos de middleware en Django:
- Middleware incorporado
- Middleware personalizado
El middleware integrado se proporciona de forma predeterminada en Django cuando crea su proyecto. Puede verificar el Middleware predeterminado en settings.py el archivo de su proyecto.
#built-in moddleware's
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Puede escribir su propio Middleware personalizado para su proyecto. El middleware personalizado puede estar basado en funciones o en clases
Middleware basado en funciones
def simple_middleware(get_response):
# One-time configuration and initialization.
def middleware(request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = get_response(request)
# Code to be executed for each request after
# the view are called.
return response
return middleware
Middleware basado en clases
class CustomMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
print("custom middleware before next middleware/view")
# Code to be executed for each request before
# the view (and later middleware) are called.
response = self.get_response(request)
# Code to be executed for each request after
# the view are called.
print("custom middleware after middleware/view")
return response
Una vez que haya escrito el código de middleware, tendrá que conectarlo a su flujo de solicitud/respuesta de Django. Debe agregar la entrada a la sección MIDDLEWARE del archivo setting.py.
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# your custom middleware
'your_app.custom_middleware_file.CustomMiddleware_class',
]
Recuerde agregar el middleware en una posición adecuada, ya que la evaluación del middleware depende de la posición; es decir, en Django primero va a ejecutar los que primero definas, justamente en el orden en el cual se encuentran definidos.
Cosas para recordar al usar middleware
- El orden del middleware es importante.
- Un middleware puede implementar process_request pero no puede implementar process_response y process_view
- Conclusión
- Se debe utilizar middleware personalizado cuando desee implementar cierto código para cada solicitud o respuesta, o ambas.
- Escriba middlewares personalizados en Django solo cuando tenga requisitos únicos para emplear los mismos, ya que significa una sobrecarga adicional al ciclo de solicitud-respuesta que, en ciertos momentos, puede tener un efecto negativo.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter