2012-04-04 11 views

Respuesta

14

Los procesadores de contexto se utilizan para proporcionar a las plantillas datos adicionales. Middleware es para interceptar los objetos de solicitud/respuesta, y modificarlos (o desencadenar otro comportamiento) de alguna manera significativa.

1

Funcionan en diferentes niveles de pila para diferentes contextos. Normalmente es difícil mantener las pilas de un marco para ser absolutamente ortodoxo, especialmente lo único que un marco web como el procesamiento de Django es la solicitud y la respuesta. Sí, podríamos usar request.user, en lugar de context.user por context_processor cuando se renderiza la plantilla. Pero es posible que no desee atributos que solo se utilizan en la plantilla, se establecen en cada solicitud.

Además, el decorador es más flexible que el middleware para el funcionamiento a nivel de vista, pero es difícil decir que el middleware es un decorador ligero. Me gustaría tratar los procesadores de contexto como etiquetas de plantilla de asignación pero cargados automáticamente, por cierto.

19

Middleware actúa como un gancho en el procesamiento de solicitud/respuesta de Django en un nivel bajo y es ligero. Los ganchos están disponibles para solicitud, respuesta, vista, template_response y procesamiento de excepción. El enganche puede necesitar modificar la solicitud antes de que la vista lo maneje, puede necesitar registrar información sobre la solicitud para fines de depuración, verificar una cookie para establecer el local, y así sucesivamente.

Obtenga más información en Middleware.

Los procesadores de contexto simplemente modifican el contexto. El contexto es un mapeo de valores clave con variables pasadas a una plantilla. Un procesador de contexto toma un objeto de solicitud como argumento y devuelve un diccionario de elementos que se fusionan en el contexto. El contexto se procesa en su plantilla según su vista y adjunta todo lo demás en lo que se fusionen sus procesadores de contexto. Puede pensarlo como una variable de contexto global, disponible para usted en todas sus plantillas.

Obtenga más información en Context Processors.

Ambos son bastante simples de escribir y tienen su propósito. Aquí es un diagrama que muestra dónde middleware y el contexto encajan en un flujo django típico:

enter image description here

Django Diagrama de flujo

solicita
  1. usuario una página

  2. Solicitud alcanza Solicitar Middlewares, que podría manipular o responder a la solicitud

  3. El URLConffinds the rela ted Ver usando urls.py

  4. Ver Middlewares se llama, lo que podría manipular o responder a la petición

  5. La función de vista se invoca

  6. La vista podría de forma opcional los datos de acceso a través de modelos

  7. Todo modelo de -DB interacciones se realizan a través de un administrador

  8. Las vistas podrían utilizar un contexto especial si es necesario

  9. El contexto se pasa a la plantilla para la representación

Cuestiones relacionadas