Modifier le texte de l'étiquette en fonction du type de champ dans Django Forms
Django est un framework Web diversifié doté de fonctionnalités robustes. Il gère facilement des tâches complexes telles que l’authentification, les sessions, l’envoi d’e-mails, etc. Il nous permet de créer des pages HTML dynamiques, de traiter efficacement les bases de données, de concevoir rapidement des formulaires, d’afficher des données dans le modèle HTML en utilisant le langage de modélisation de Django, etc.
En général, nous devons parfois utiliser une valeur spécifique pour une autre valeur spécifique. Considérez-le comme une paire clé-valeur. Une clé particulière a une valeur particulière qui lui est associée.
Et si nous devions faire varier le nom de l’étiquette en fonction du type de champ ou afficher un texte spécifique pour un champ particulier dans Django ? Cet article parle de la même chose.
Modifier le nom de l’étiquette à l’aide du langage de modélisation Django
Dans un fichier HTML, en utilisant le langage de modélisation de Django, nous pouvons accéder au type de champ à l’aide de l’instruction suivante.
{{ fieldName.field.widget.input_type }}
En utilisant cette astuce, nous pouvons varier les noms d’étiquettes en fonction des types de champs.
Dans le dictionnaire de contexte d’une vue d’un modèle, ajoutez ce qui suit.
"fieldLabels": [
("text", "Label for Text Field"),
("password", "Label for Password Field"),
("file", "Label for File Field"),
("number", "Label for Number Field"),
...,
]
La liste ci-dessus stocke les tuples au format ("field type", "label text")
. Nous pouvons parcourir ces tuples dans les modèles et afficher les informations requises en fonction d’une condition if
.
À l’intérieur d’un modèle, faites quelque chose comme ceci.
{% for field in form.visible_fields %}
{% for fieldName, label in fieldLabels %}
{% if fieldName == field.field.widget.input_type %}
<div>
<label>{{ label }}</label>
{{ field }}
</div>
{% endif %}
{% endfor %}
{% endfor %}
Le code ci-dessus parcourt toutes les valeurs des fieldLables
pour chaque champ de formulaire, et si un nom de champ correspond, alors son texte d’étiquette respectif est affiché.