Cómo aprendí sobre los procesadores de contexto en Django
Estoy construyendo una tienda de accesorios en línea con Django.
Creé una barra de navegación para mostrar las categorías de productos. Al principio, las categorías estaban escritas directamente en el código. Esto funcionó durante un tiempo.
Luego noté un problema. Si añado una nueva categoría, debo actualizar la barra de navegación manualmente. Esto es ineficiente.
Mi primera idea fue pasar las categorías a través del contexto en mi vista. Pronto vi un segundo problema. Todas las páginas necesitan la barra de navegación. Esto significa que tendría que repetir el mismo código en cada una de las vistas. Esto genera un código desordenado.
Encontré una mejor manera: los procesadores de contexto (Context Processors) de Django.
Los procesadores de contexto ponen los datos a disposición de todas las plantillas. No es necesario pasar los datos desde cada vista.
Usa los procesadores de contexto para:
- Categorías de navegación
- Ajustes del sitio
- Notificaciones de usuario
- Datos del carrito de compras
Un procesador de contexto es una función de Python. Recibe un objeto request y devuelve un diccionario.
Ejemplo:
def custom_context(request):
return {
"custom_value": "hello from context processors"
}
Debes registrar la función en tu configuración. Añádela a la lista context_processors dentro de la configuración TEMPLATES.
Ejemplo:
'OPTIONS': {
'context_processors': [
'myapp.context_processors.custom_context',
],
},
Ahora, puedes usar los datos en tus plantillas de esta manera:
{{ custom_value }}
Esto resolvió mi problema. Mi barra de navegación ahora obtiene los datos de las categorías automáticamente en cada página. Ya no tengo que duplicar código.
Construir funcionalidades a menudo te enseña nuevos conceptos. Para mí, estos fueron los procesadores de contexto.
Fuente: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h