Domanda

Voglio solo definire l'attributo id del tag body nel modello figlio. La prima soluzione funziona perfettamente:

base.html:

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

child.html:

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

È semplice e interessante! Ma non mi piace indicare id = " myId " in ogni modello figlio. Voglio solo inviare il valore 'myId' al modello principale, dove viene messo a id = " .... " ;. Quindi, invento questo metodo:

base.html:

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

child.html:

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

Ma è terribile e noioso confrontare la prima soluzione. C'è un buon metodo per farlo?

Questo problema è più profondo della gestione di bodyId. Penso, provo a trovare e organizzare il sistema di subtemplate attraverso l'eredità del modello django standard.

È stato utile?

Soluzione

Nel modello di base:

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

Nel modello figlio:

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

Se capisco correttamente la tua domanda, questo dovrebbe essere sufficiente per ottenere ciò che desideri; invia solo l'ID effettivo ( myId ) al modello di base.

Altri suggerimenti

Tu, se preferisci, imposti questo tramite il tuo codice - in modo che i tuoi ID facciano parte del tuo oggetto di contesto, e quindi non sia richiesto di essere inseriti nei modelli figlio, solo le viste che li chiamano.

Puoi quindi dire al tuo modello di base di ottenere l'id dall'oggetto di contesto, o piuttosto usare semplicemente la sintassi del modello per esso:

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

Le preferenze personali qui ovviamente, e dipendono dalla struttura dei tuoi modelli e viste, ma è il modo in cui lo farei.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top