Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

179
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!