Question

Je veux juste définir l'attribut id de la balise body dans le modèle enfant. La première solution fonctionne parfaitement:

base.html:

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

child.html:

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

C'est simple et cool! Mais je n'aime pas pointer id = " myId " dans chaque modèle enfant. Je veux juste envoyer la valeur "myId" au modèle parent, où il est mis à id = "...". J'ai donc inventé cette méthode:

base.html:

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

child.html:

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

Mais il est terrible et fastidieux de comparer la première solution. Y at-il une bonne méthode pour faire cela?

Ce problème est plus profond que la gestion de bodyId. Je pense que j’essaie de trouver et d’organiser un système de sous-modèle à travers l’héritage standard des templates Django.

Était-ce utile?

La solution

Dans le modèle de base:

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

Dans le modèle enfant:

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

Si je comprends bien votre question, cela devrait être suffisant pour obtenir ce que vous voulez. envoyez uniquement l'ID actuel ( myId ) au modèle de base.

Autres conseils

Si vous préférez, définissez cette option à l'aide de votre code - de sorte que vos identifiants fassent partie de votre objet de contexte et qu'il ne soit par conséquent pas nécessaire de les saisir dans les modèles enfants, mais uniquement dans les vues qui les appellent.

Vous pouvez ensuite demander à votre modèle de base d'obtenir l'ID de l'objet contextuel, ou plutôt simplement utiliser la syntaxe de modèle correspondante:

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

Préférence personnelle ici bien sûr, et cela dépend de la structure de vos modèles et de vos vues, mais c’est comme cela que je le ferais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top