safe - templates django settings
¿Es una forma de pasar la variable a la plantilla ''extendida'' en Django? (2)
Lo que necesitas es una etiqueta de plantilla de inclusión. Puede incluir una plantilla en otra plantilla y representarla con un contexto específico.
{% include ''layout.html'' with sidebar=True sidebar_width=4 %}
Consulte los documentos aquí: https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#include
Quiero agregar algo de flexibilidad a mi plantilla de diseño, pero no puedo encontrar ninguna manera de hacerlo.
Estoy buscando una manera de extend
plantilla de diseño con la variable, es decir, pasar la variable arriba en el árbol de la plantilla, no hacia abajo.
# views.py
def my_view_func(request):
return render(request, "child.html")
# child.html
{% extends ''layout.html'' with show_sidebar=True sidebar_width_class="width_4" %}
<div>Templates stuff here</div>
# layout.html
{% if show_sidebar %}
<div class="{{ sidebar_width_class }}">
{% block sidebar %}{% endblock %}
</div>
{% endif %}
Tengo que mantener cuatro plantillas con la diferencia en algunas líneas de código ahora. Por ejemplo, tengo dos plantillas que se diferencian entre sí por la clase de ancho de la barra lateral. ¿Estoy haciendo algo mal?
Sospecho que el block
es lo que buscas en primer lugar.
Forme su bloque dentro de la plantilla base así:
{% block sidebar_wrapper %}
{% if sidebar %}
<div class="width{{sidebar_width}}">
{% block sidebar %}{% endblock %}
</div>
{% endif %}
{% endblock sidebar_wrapper%}
Y en su plantilla hijo:
{% extends ''layout.html'' %}
{% block sidebar_wrapper %}
{% with sidebar=True sidebar_width=4 %}
{{ block.super }}
{% endwith%}
{% endblock sidebar_wrapper%}