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

133
Vistas
Pase el contexto a través de múltiples etiquetas de inclusión anidadas en Django

Me gustaría pasar la variable 'contexto' a través de múltiples etiquetas de inclusión en Django así:

base.html:

 {% load extras %} {% table_of_contents course %}

tabla-de-contenido.html:

 {% load extras %} <h1>Table of contents</h1> {% for section in course.sections %} {% display_section section %} {% endfor %}

extras.py:

 @register.inclusion_tag('table-of-contents.html', takes_context=True) def table_of_contents(context, course): return { 'course': course, } @register.inclusion_tag('display_section.html', takes_context=True) def section_expanded(context, section): # Identify the user from the context request user = context['request'].user return { 'section': section, 'completed': section.has_been_completed_by(user), 'outstanding_modules': section.get_outstanding_modules_for(user) }

Sin embargo, cuando ejecuto el código anterior, aparece un error clave porque la variable de contexto no se pasa a la segunda etiqueta de inclusión:

 KeyError at /courses/pivottables-video-course/table-of-contents/ 'request'

¿Cómo puedo asegurarme de que la variable de contexto persista cuando se pasa a varias etiquetas de inclusión anidadas?

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

0

Está definiendo un nuevo contexto con return {'foo': 'bar'} para sus plantillas, y este nuevo contexto no contiene la clave de request . De forma predeterminada context['request'] se establece mediante el procesador de contexto de request ( https://docs.djangoproject.com/en/dev/ref/templates/api/#django-template-context-processors-request ).

Si desea pasar context['request'] a través de varias etiquetas, puede hacer esto:

 @register.inclusion_tag('table-of-contents.html', takes_context=True) def table_of_contents(context, course): return { # ... 'request': context.get('request'), # ... } @register.inclusion_tag('display_section.html', takes_context=True) def section_expanded(context, section): # Identify the user from the context request user = context['request'].user return { # ... 'request': context.get('request'), # ... }
about 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