Question

Je me demande si quelqu'un peut m'aider à trouver la meilleure approche au problème suivant. Je construis une application Web qui utilise des modèles Django pour construire son composant d'interface utilisateur Web. Il existe un certain nombre d'éléments HTML communs tels que l'en-tête / pied de page, l'en-tête HTML, le générique, etc. J'aimerais les coder une fois et "inclure / combiner". avec d'autres modèles représentant la fonctionnalité principale de l'application.

Est-ce possible d'utiliser des modèles Django? Si oui, comment pourrais-je y parvenir?

Était-ce utile?

La solution

Vous pouvez utiliser la balise extend de django. Supposons que vous ayez un en-tête et un pied de page. Vous pouvez créer un modèle, appelé par exemple foo.django:

<h1>My HTML Header</h1>
<!-- an so on -->

{% block content %}
{% endblock %}

<!-- html footer -->

Ensuite, vous pouvez créer un autre modèle, disons bar.django:

{% extends "foo.django" %}

{% block content %}
This overrides the content block in foo.django.
{% endblock %}

... qui rendra alors:

<h1>My HTML Header</h1>
<!-- an so on -->

This overrides the content block in foo.django.

<!-- html footer -->

Vous trouverez de bonnes instructions sur les modèles Django à l'adresse http://www.djangobook.com/en/. 1.0 / chapter04 / .

Autres conseils

Les méthodes

Les méthodes {% extend%} et {% include%} conviennent aux éléments de page qui ne nécessitent pas d'informations supplémentaires dans le contexte.

Dès que vous devez insérer plus d'éléments dans le contexte de la base de données, les balises de modèle sont utiles. À titre d’exemple, la contrib. commentaires app inclus dans Django définit une balise de modèle {% get_comment_list%} permettant de récupérer les commentaires attachés à une instance de modèle donnée. Voici comment vous l'utiliseriez:

<div>
{% load comments %}
{% get_comment_list for my_instance as comment_list %}
{% for comment in comment_list %}
  <p><a href="{{ comment.url }}">{{ comment.name }}</a> wrote:</p>
  {{ comment.comment }}
{% endfor %}
</div>

Vous pouvez enregistrer ceci dans un modèle séparé et le {% include%} dans d'autres modèles.

Pour votre propre contenu, vous pouvez écrire vos propres balises de modèles personnalisés. Suivez la la documentation . Dans la mesure du possible, il est pratique d’écrire des balises avec balise simple mécanisme. Vous trouverez des balises de modèles prêtes à l'emploi sur djangosnippets.org et sur le blogosphère .

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