Me parece que todo lo que un procesador de contexto puede hacer, middleware puede hacer. Entonces, ¿cuál es el punto de los procesadores de contexto? ¿Son solo middleware-lite?Procesadores de contexto vs middleware en django
Respuesta
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.
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.
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:
Django Diagrama de flujo
solicitausuario una página
Solicitud alcanza Solicitar Middlewares, que podría manipular o responder a la solicitud
El URLConffinds the rela ted Ver usando urls.py
Ver Middlewares se llama, lo que podría manipular o responder a la petición
La función de vista se invoca
La vista podría de forma opcional los datos de acceso a través de modelos
Todo modelo de -DB interacciones se realizan a través de un administrador
Las vistas podrían utilizar un contexto especial si es necesario
El contexto se pasa a la plantilla para la representación
- 1. Django, procesadores de contexto de plantilla
- 2. Django - procesadores de contexto de plantilla - rompiendo mi aplicación
- 3. ¿Cuándo es apropiado usar procesadores de contexto Django?
- 4. Procesadores de contexto Django: ¿es posible acceder al contexto actual en ContextProcessor?
- 5. cómo insertar un texto en todo el contexto Django Django usando el middleware
- 6. Middleware no global en Django
- 7. Aplicación vs desarrollo de middleware en Android
- 8. Middleware Django y HttpRequest change
- 9. matraz: wsgi-middleware vs before_ y after_request()
- 10. Conectar middleware de sesión - regenerar vs recargar
- 11. accediendo al modelo desde middleware - django
- 12. django middleware conjunto usuario variable global especial
- 13. Seguro para modificar configuraciones.SITE_ID de middleware en Django?
- 14. Lógica empresarial en procesadores Camel vs puntos finales de servicio
- 15. contexto vs vistas
- 16. ¿Es seguro el hilo de middleware de Django?
- 17. Tener una API POST'able y el middleware CSRF de Django
- 18. Beneficios de Messaging comercial Middleware vs Código abierto
- 19. Django -vs- Grails -vs-?
- 20. ¿Cómo redirecciono en Django con contexto?
- 21. Regular vs Contexto Gramáticas gratis
- 22. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native
- 23. ¿Qué es middleware cuando se hace referencia en el contexto de Ruby on Rails?
- 24. Cómo deshabilitar el middleware y el contexto de solicitud en algunas vistas
- 25. herencia de plantilla django y contexto
- 26. Variables de contexto Django y respuesta ajax
- 27. django-pyodbc vs django-mssql
- 28. ¿Mejores prácticas para procesadores de contexto frente a etiquetas de plantilla?
- 29. fin de middleware Scrapy
- 30. MPI ¿Número de procesadores?