Menu
CoddyTech

Criando um formulário

Parte da seção Forms do Journey de Django da Coddy. Lição 6 de 20.

A página em /events/new/ escreve cada rótulo e campo de entrada manualmente, e EventForm lista os mesmos campos novamente. Um formulário pode ser gerado por conta própria: passe um para o template e escreva {{ form }} dentro da tag <form>. Uma página de contato:

<form method="post">
    {% csrf_token %}
    {{ form }}
    <button type="submit">Send</button>
</form>

{{ form }} escreve um rótulo e um campo de entrada para cada campo, na ordem em que a classe os declara. Cada campo de entrada recebe o name do campo e um id como id_email, para que o rótulo aponte para ele. A tag do formulário, o token e o botão continuam sendo responsabilidade sua.

Um formulário ainda sem nenhum dado digitado é a classe chamada sem dados: ContactForm(). O Django também marca os campos de entrada obrigatórios com required, para que o navegador impeça o envio de um campo vazio.

challenge icon

Desafio

Fácil
  • Em new_event, passe um EventForm vazio para o template como form.
  • Em new_event.html, substitua os rótulos e os campos de entrada pelo próprio formulário. Mantenha a tag do formulário, o token, o botão e a mensagem de erro.

Clique em Run e abra /events/new/: o Django renderiza os campos.

Experimente você mesmo

{% extends "events/base.html" %}

{% block title %}Add an event{% endblock %}

{% block content %}
<h1>Add an event</h1>
{% if error %}
<p class="error">{{ error }}</p>
{% endif %}
<form method="post">
    {% csrf_token %}
    <label for="title">Title</label>
    <input id="title" name="title">
    <label for="date">Date</label>
    <input id="date" name="date" type="date">
    <label for="place">Place</label>
    <input id="place" name="place">
    <button type="submit">Add event</button>
</form>
{% endblock %}

Todas as lições de Forms

Pratique por conta própria: Playground de Django