Modifier le texte de l'étiquette en fonction du type de champ dans Django Forms

Vaibhav Vaibhav 29 juin 2021
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é.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.