Altere o texto do rótulo com base no tipo de campo no Django Forms

Vaibhav Vaibhav 29 junho 2021
Altere o texto do rótulo com base no tipo de campo no Django Forms

Django é uma estrutura web diversificada que vem com recursos robustos. Ele lida facilmente com tarefas complexas como autenticação, sessões, e-mail, etc. Ele nos permite criar páginas HTML dinâmicas, lidar com os bancos de dados de maneira eficiente, criar formulários rapidamente, exibir dados no template HTML usando a linguagem de templates do Django, etc.

Em geral, às vezes temos que usar algum valor específico para algum outro valor específico. Pense nisso como um par de valores-chave. Uma determinada chave possui um determinado valor associado a ela.

E se tivermos que variar o nome do rótulo com base no tipo de campo ou exibir um texto específico para um campo particular no Django? Este artigo fala sobre o mesmo.

Alterar o nome do rótulo usando Django Templating Language

Em um arquivo HTML, usando a linguagem de modelos do Django, podemos acessar o tipo de campo usando a seguinte instrução.

{{ fieldName.field.widget.input_type }}

Usando esse truque, podemos variar os nomes dos rótulos com base nos tipos de campo.

No dicionário de contexto de uma visualização de um modelo, adicione o seguinte.

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

A lista acima armazena tuplas no formato ("field type", "label text"). Podemos iterar sobre essas tuplas nos modelos e exibir as informações necessárias com base em uma condição if.

Dentro de um modelo, faça algo assim.

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

O código acima itera sobre todos os valores de fieldLables para cada campo do formulário e, se o nome de um campo corresponder, o respectivo texto do rótulo será exibido.

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.