Pregunta

Solo quiero definir el atributo id de la etiqueta del cuerpo en la plantilla secundaria. La primera solución funciona perfectamente:

base.html:

[body{% block bodyid %}{% endblock %}]

child.html:

{% block bodyid %} id="myId"{% endblock %}

Es simple y genial! Pero no me gusta señalar id = " myId " en cada plantilla infantil. Solo quiero enviar el valor 'myId' a la plantilla principal, donde se pone a id = " .... " Entonces, invento este método:

base.html:

[body{% block bodyid %} id={{ bodyid }}{% endblock %}]

child.html:

{% block bodyid %}
    {% with 'myId' as bodyid %}
        {{ block.super }}
    {% endwith %}
{% endblock %}

Pero es terrible y tedioso comparar la primera solución. ¿Hay algún buen método para hacer esto?

Este problema es más profundo, que administrar bodyId. Creo que trato de encontrar y organizar el sistema de subtemplado a través de la herencia de la plantilla estándar de django.

¿Fue útil?

Solución

En la plantilla base:

<body id="{% block bodyid %}{% endblock %}">

En la plantilla secundaria:

{% block bodyid %}myId{% endblock %}

Si entiendo su pregunta correctamente, esto debería ser suficiente para lograr lo que quiere; solo envíe la ID actual ( myId ) a la plantilla base.

Otros consejos

Usted, si lo prefiere, configura esto a través de su código, de modo que sus ID sean parte de su objeto de contexto y, por lo tanto, no es necesario que se ingresen en las plantillas secundarias, solo las vistas que las llaman.

Luego, puede indicar a su plantilla base que obtenga el ID del objeto de contexto, o simplemente usar la sintaxis de la plantilla para él:

<body id="{{ body_id }}">

La preferencia personal aquí, por supuesto, y depende de la estructura de sus plantillas y vistas, pero es la forma en que lo haría.

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