Cambiar el texto de la etiqueta según el tipo de campo en los formularios de Django

Vaibhav Vaibhav 3 abril 2022
Cambiar el texto de la etiqueta según el tipo de campo en los formularios de Django

Django es un marco web diverso que viene repleto de funciones sólidas. Maneja fácilmente tareas complejas como autenticación, sesiones, correo electrónico, etc. Nos permite crear páginas HTML dinámicas, manejar de manera eficiente las bases de datos, diseñar formularios rápidamente, mostrar datos en la plantilla HTML usando el lenguaje de plantillas de Django, etc.

En general, a veces tenemos que usar algún valor específico para algún otro valor específico. Piense en ello como un par clave-valor. Una clave en particular tiene un valor particular asociado.

¿Qué pasa si tenemos que variar el nombre de la etiqueta según el tipo de campo o mostrar un texto específico para un campo en particular en Django? Este artículo habla de lo mismo.

Cambiar el nombre de la etiqueta usando el lenguaje de plantillas Django

En un archivo HTML, usando el lenguaje de plantillas de Django, podemos acceder al tipo de campo usando la siguiente declaración.

{{ fieldName.field.widget.input_type }}

Con este truco, podemos variar los nombres de las etiquetas según los tipos de campo.

En el diccionario de contexto de una vista de una plantilla, agregue lo siguiente.

"fieldLabels": [
    ("text", "Label for Text Field"),
    ("password", "Label for Password Field"),
    ("file", "Label for File Field"),
    ("number", "Label for Number Field"),
    ...,
]

La lista anterior almacena tuplas en el formato ("field type", "label text"). Podemos iterar sobre estas tuplas en las plantillas y mostrar la información requerida en función de una condición if.

Dentro de una plantilla, haz algo como esto.

{% 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 %}

El código anterior itera sobre todos los valores de fieldLables para cada campo de formulario, y si el nombre de un campo coincide, se muestra el texto de su etiqueta respectiva.

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.