Ändern Sie den Beschriftungstext basierend auf dem Feldtyp in Django Forms
Django ist ein vielfältiges Web-Framework, das mit robusten Funktionen ausgestattet ist. Es bewältigt problemlos komplexe Aufgaben wie Authentifizierung, Sitzungen, E-Mail-Versand usw. Es ermöglicht uns, dynamische HTML-Seiten zu erstellen, effizient mit den Datenbanken umzugehen, Formulare schnell zu entwerfen, Daten in der HTML-Vorlage mit der Templating-Sprache von Django anzuzeigen usw.
Im Allgemeinen müssen wir manchmal einen bestimmten Wert für einen anderen bestimmten Wert verwenden. Betrachten Sie es als ein Schlüssel-Wert-Paar. Einem bestimmten Schlüssel ist ein bestimmter Wert zugeordnet.
Was ist, wenn wir den Labelnamen basierend auf dem Feldtyp variieren oder einen bestimmten Text für ein bestimmtes Feld in Django anzeigen müssen? Dieser Artikel spricht über dasselbe.
Ändern Sie den Labelnamen mit der Django Templating Language
In einer HTML-Datei, die die Vorlagensprache von Django verwendet, können wir mit der folgenden Anweisung auf den Feldtyp zugreifen.
{{ fieldName.field.widget.input_type }}
Mit diesem Trick können wir die Labelnamen basierend auf den Feldtypen variieren.
Fügen Sie im Kontext Dictionary einer Ansicht einer Vorlage Folgendes hinzu.
"fieldLabels": [
("text", "Label for Text Field"),
("password", "Label for Password Field"),
("file", "Label for File Field"),
("number", "Label for Number Field"),
...,
]
Die obige Liste speichert Tupel im Format ("field type", "label text")
. Wir können über diese Tupel in den Vorlagen iterieren und die erforderlichen Informationen basierend auf einer if
-Bedingung anzeigen.
Gehen Sie in einer Vorlage so vor.
{% 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 %}
Der obige Code durchläuft alle Werte der fieldLables
für jedes Formularfeld, und wenn ein Feldname übereinstimmt, wird der entsprechende Beschriftungstext angezeigt.