[Astuces] Comment étendre le modèle lors de la création de HTML avec django

Aperçu

Contexte

--Référence: document django version 1.9

Celles que le créateur doit décider pour lui-même sont écrites en majuscules et les autres en minuscules. Nom de variable ou nom de fichier.

Structure des modèles html lors de l'héritage

Étant donné que le site officiel a introduit une méthode efficace lors de l'écriture html en utilisant l'extension du modèle, il en est presque une traduction.

Préparez base.html

Créer un modèle de base qui est à la base de tout. Emballez ici tout ce qui est à la base de votre site Web.

Si vous souhaitez ajouter du contenu ultérieurement, préparez-le en tant que {% block CONTENTSNAME%}. C'est également une bonne méthode de développement pour entrer la valeur par défaut à ce moment. (Il y a un supplément en bas.)

Le document officiel a un exemple concret comme celui-ci.

base.html



<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="style.css" />
    <title>{% block title %}My amazing site{% endblock %}</title>
</head>

<body>
    <div id="sidebar">
        {% block sidebar %}
        <ul>
            <li><a href="/">Home</a></li>
            <li><a href="/blog/">Blog</a></li>
        </ul>
        {% endblock %}
    </div>

    <div id="content">
        {% block content %}{% endblock %}
    </div>
</body>
</html>

Créez une version légèrement plus limitée en tant que base_SECTIONNAME.html

Par exemple, si vous créez un blog, il est plus spécifique que ** base_index.html ** ou ** base_blogindex.html ** ou base.html, mais il n'intègre pas tout le contenu.

J'ai l'impression de préparer ici les fonctions individuelles nécessaires pour chaque page. Encore une fois, mettez une balise de bloc comme {% block CONTENTSNAME%} '' `` dans la partie que vous souhaitez insérer dans le modèle enfant.

Créer des pages individuelles concrètement

Faites quelque chose de très spécifique, comme ce qui manque, ou mettez en fait une variable et affectez-la. Une image qui complète une page Web.

Conseils sur l'utilisation du tag

Il semble qu'il existe des règles détaillées concernant les balises, et je vais les résumer.

{% extend'parent template name.html '%}

Ceci est une balise pour montrer la relation parent-enfant du modèle. Je vais donner à l'enfant le nom du modèle du parent en faisant extend. Ensuite, vous pouvez insérer le contenu là où le parent a créé la balise de bloc.

La mise en garde à l'utilisation de cette balise est que la balise extend doit être en haut. Veuillez noter que si vous écrivez cette balise au milieu, l'erreur ne sera pas héritée normalement.

Le document a un exemple concret comme celui-ci.

base.html


<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="style.css" />
    <title>{% block title %}My amazing site{% endblock %}</title>
</head>

<body>
    <div id="sidebar">
        {% block sidebar %}
        <ul>
            <li><a href="/">Home</a></li>
            <li><a href="/blog/">Blog</a></li>
        </ul>
        {% endblock %}
    </div>

    <div id="content">
        {% block content %}{% endblock %}
    </div>
</body>
</html>

L'enfant ressemble à ça.

base_CHILD.html


{% extends 'base.html' %}

{% block title %}My amazing blog {%endblock%}

{% block content %}
{% for entry in bloc_entries %}
	<h2>{{entry.title}}</h2>
	<p>{{entry.body}}</p>
{%endfor%}
{%endblock%}

Il peut être préférable de passer en revue les détails et les spécificités de l'utilisation des balises. ..

À propos de {% block%}

Vous devriez avoir beaucoup de balises de bloc

Il y a de nombreux blocs et il n'y a rien de mal à cela. Par conséquent, il semble qu'il vaut mieux aller d'un bout à l'autre là où il est susceptible d'être utilisé à l'avenir.

Quand il y a beaucoup de répétitions

Si vous pensez que la même chose est codée à plusieurs reprises dans le modèle de l'enfant, il est préférable de l'écrire dans le modèle parent.

Il est plus facile à lire avec moins de répétitions. SEC! SEC !!

Pour faciliter la lecture,

Si vous rédigez la correspondance en faisant {% endblock CONTENTSNAME%}, elle sera plus facile à lire pour les autres. C'est une ère d'open source, donc si vous ne l'écrivez pas en supposant qu'il sera lu par d'autres personnes, ce sera difficile plus tard. ..

Précautions concernant la création d'une balise de bloc

Les noms des balises de bloc doivent être indépendants. Cela ne fonctionne pas si vous avez le même nom.

Il semble que l'échange de balises de bloc ne soit pas à sens unique entre parents et enfants, mais réciproque. Si les parents préparent beaucoup de balises de bloc, il semble que les enfants auront des problèmes car ils ne sauront pas à laquelle se référer lorsqu'ils verront le tag du parent.

Peut-être quelque chose comme ça. Si vous étudiez ceci, lisez le document et pratiquez un peu, la relation d'héritage du modèle devrait être correcte. .. ..

Recommended Posts

[Astuces] Comment étendre le modèle lors de la création de HTML avec django
Comment effectuer un traitement arithmétique avec le modèle Django
Choses à faire lorsque vous commencez à développer avec Django
Gestion des fichiers statiques lors du déploiement en production avec Django
Comment résoudre la protection CSRF lors de l'utilisation d'AngularJS avec Django
Standardiser le HTML à louer avec Django
Comment démarrer avec Django
Comment faire un test de sac avec python
Comment faire des événements envoyés par le serveur dans Django
Modèle HTML Django partie 2
Modèle HTML Django
Astuces pour les modèles Django
Comment faire un traitement parallèle multicœur avec python
[Django] Comment résoudre les erreurs lors de l'installation de mysqlclient
Comment développer une application de panier avec Django
Comment implémenter "named_scope" de RubyOnRails avec Django
Une histoire qui nécessitait des préparatifs pour essayer de faire un tutoriel Django avec des centos simples
Comment faire un calcul de hachage avec Salt en Python
La solution de contournement pour le modèle de Django n'existe pas
Comment faire du zéro-padding sur une ligne avec OpenCV
Comment accéder avec cache lors de la lecture_json avec pandas
Lorsque vous souhaitez filtrer avec le framework Django REST
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
[Ansible] Comment appeler des variables lors de la création de votre propre module
Comment ne pas charger d'images lors de l'utilisation de PhantomJS avec Selenium
Comment vérifier le comportement d'ORM avec un fichier avec django
Comment mettre à jour les informations utilisateur sur Django RemoteUserMiddleware login
[Django] Comment donner des valeurs d'entrée à l'avance avec ModelForm
Comment effectuer les réglages initiaux à partir de la création de projet Django
Que faire lorsque "En-tête HTTP_HOST non valide" apparaît dans Django
Comment gérer UnicodeDecodeError lors de l'exécution du téléchargement d'image Google
Comment générer des informations supplémentaires lors de la sortie de journaux avec le module de journalisation de python
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Comment mettre à jour avec SQLAlchemy?
Comment lancer avec Theano
Effectuer le cryptage AES avec DJango
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment supprimer avec SQLAlchemy?
Comment ne pas échapper au japonais en traitant avec JSON en Python
Lors de la création de .gitignore avec gibo, je n'ai pas eu à écrire .python-version.
[Beanstalk] Que faire lorsqu'une erreur se produit avec import uuid
Comment gérer les erreurs lors de l'installation de whitenoise et du déploiement sur Heroku
J'ai essayé de résumer brièvement la procédure de démarrage du développement de Django
Une note à laquelle j'étais accro lors de la création d'une table avec SQL Alchemy
Comment gérer les erreurs lors de l'installation de Python et de pip avec choco
Comment écrire quoi faire lorsque l'application est affichée pour la première fois dans Qt pour Python avec Designer
Convertir .ipynb en .html (avec BatchFile)
Comment annuler RT avec Tweepy
Que faire quand Ubuntu plante
[Python] Comment faire PCA avec Python
Python: comment utiliser async avec
[Django] Comment tester le formulaire [TDD]
Que faire avec l'installation de Magics