Django Utilisation de {% extend%}, {% include%} et {% blocks%}


Exemple

résumé

  • {% extend%} : cela déclare le modèle donné comme argument en tant que parent du modèle en cours. Utilisation: {% extends 'parent_template.html' %} .

  • {% block%} {% endblock%} : Ceci est utilisé pour définir des sections dans vos modèles, de sorte que si un autre modèle étend celui-ci, il pourra remplacer le code HTML qui a été écrit à l'intérieur. Les blocs sont identifiés par leur nom. Utilisation: {% block content %} <html_code> {% endblock %} .

  • {% include%} : cela insérera un modèle dans le modèle actuel. Sachez que le modèle inclus recevra le contexte de la requête et vous pourrez également lui attribuer des variables personnalisées. Utilisation de base: {% include 'template_name.html' %} , utilisation avec des variables: {% include 'template_name.html' with variable='value' variable2=8 %}

Guider

Supposons que vous construisiez votre code côté frontal avec des dispositions communes pour tout le code et que vous ne souhaitiez pas répéter le code pour chaque modèle. Django vous offre des balises construites pour cela.
Supposons que nous ayons un site Web de blog ayant 3 modèles qui partagent la même mise en page:

project_directory
    ..
    templates
      front-page.html
      blogs.html
      blog-detail.html

1) Définir le fichier base.html ,

<html>
  <head>
  </head>

  <body>
        {% block content %}
        {% endblock %}
   </body>
</html>

2) blog.html dans blog.html comme,

{% extends 'base.html' %}

{% block content %}
    # write your blog related code here
{% endblock %}

# None of the code written here will be added to the template

Ici, nous avons étendu la disposition de base afin que sa mise en page HTML soit maintenant disponible dans le blog.html blog.html. Le concept de { % block %} est un héritage de modèle qui vous permet de créer un modèle de base contenant tous les éléments site et définit les blocs que les modèles enfants peuvent remplacer.

3) Supposons maintenant que tous vos 3 modèles aient le même code HTML, ce qui définit certains articles populaires. Au lieu d'être écrits, les 3 fois créent un nouveau modèle posts.html .

blog.html

{% extends 'base.html' %}

{% block content %}
    # write your blog related code here
    {% include 'posts.html' %} # includes posts.html in blog.html file without passing any data
    <!-- or -->
    {% include 'posts.html' with posts=postdata %} # includes posts.html in blog.html file with passing posts data which is context of view function returns.
{% endblock %}