Pregunta

Me gustaría hacer lo siguiente:

{% if appnav %}
<hr />
<div id="appnav">
    <ul class="tabs">
        {% block appnav %}{% endblock %}
    </ul>
</div>
{% endif %}

... sin embargo, las pruebas para el uso actual de un bloque por plantillas más abajo en la cadena de herencia no parecen funcionar.

¿Hay algún otro condicional que pueda hacer esto?

¿Fue útil?

Solución

El idioma de la plantilla no proporciona exactamente lo que estás buscando. Las plantillas secundarias pueden llamar al bloque principal con {{block.super}} , pero las plantillas principales no pueden hacer referencia a las plantillas secundarias.

Su mejor opción probablemente será escribir una etiqueta de plantilla personalizada. Hay dos secciones en el manual de la plantilla para revisar.

Primero, Analizando hasta otra etiqueta de bloque . Esto te dará los conceptos básicos de cómo analizar.

Segundo, Analizando hasta otra etiqueta de bloque y guardando contenido . Al colocar una etiqueta de bloque dentro de la etiqueta personalizada, puede detectar contenido y envolverlo según corresponda. Esto debería funcionar, porque creo que la etiqueta de bloque interior se analizará primero. Si eso no funciona, subclase la etiqueta de plantilla de bloque existente proporcionada por django para implementar su magia especial.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top