Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

175
Vistas
¿Cómo pasar datos a una plantilla sin pasarlos por la vista?

Tengo un archivo base.html donde en la barra lateral recorre todos los espacios dentro de mi modelo de Espacios y los muestra como enlaces. Me pregunto, en lugar de pasar estos espacios a través de cada vista, ¿hay alguna manera de tenerlos en la plantilla base? Intenté buscarlo y encontré etiquetas de plantilla, pero no creo que sean lo que estoy buscando.

Base.html

 <div class="sidenav"> <h2>Spaces:</h2> {% for space in spaces %} <a href="/{{space}}">{{space}}</a> {% endfor %} </div>

En este momento estoy pasando 'espacios' a través de mis vistas, pero no quiero tener que hacer eso en cada vista que creo.

¡Cualquier ayuda sería apreciada!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para tener alguna variable global para todas las plantillas, Django proporciona un context processor . Un procesador de contexto es una función de Python que toma el objeto de la solicitud como argumento y devuelve un diccionario que se agrega al contexto de la solicitud.

Puede agregar los objetos de spaces en el procesador de contexto de esta manera:

nombre_aplicación/procesadores_contexto.py

 from .app_name import Space def spaces(request): # It must return a dictionary don't forget return {'spaces': Space.objects.all()}

En su procesador de contexto, crea una instancia del espacio utilizando el objeto de solicitud y lo pone a disposición de las plantillas como una variable denominada spaces .

configuración.py

Y luego, debe agregar este procesador de contexto personalizado en la variable TEMPLATES en settings.py de esta manera:

 TEMPLATES = [ { # ... 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', # Customs 'app_name.context_processors.space', ], }, ]

template.html Ahora tiene acceso a spaces variables en todas las plantillas del proyecto.

 <div class="sidenav"> <h2>Spaces:</h2> <!-- spaces variable is in all templates --> {% for space in spaces %} <a href="/{{space}}">{{space}}</a> {% endfor %} </div>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda