Django middleware única “process_response” cuando la señorita barra final

StackOverflow https://stackoverflow.com/questions/1795226

  •  22-09-2019
  •  | 
  •  

Pregunta

He escribir una middware como esto:

class LogMiddleware( object ):

    def process_request( self, request ):
        logging.debug("start")

    def process_response( self, request, response ):
        logging.debug("end")
        return response

y lo puse en la parte inferior de MIDDLEWARE_CLASSES

más tiempo que trabaja muy bien.

y cuando pruebo con el URL / admin sin un arrastre "/" y sólo podía ver el "fin" conectado, ¿por qué?

¿Fue útil?

Solución

El documentación explica esto.

clases de middleware se procesan en el orden en que aparecen. La clase CommonMiddleware es más alta que la clase LogMiddleware, por lo que se procesa en primer lugar. Se realiza una redirección porque la URL no termina con una barra, por lo que devuelve un HttpResponseRedirect.

Si una solicitud de middleware devuelve una respuesta, como en este caso, no hay clases adicionales petición de middleware son procesados, por lo que 'Inicio' no está conectado. Sin embargo, las clases de middleware de respuesta son siempre procesado, por lo que 'fin' se registra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top