Menu
CoddyTech

Um formulário POST

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

A página /events/new/ e sua view estão prontas, mas a página não tem um formulário para adicionar um evento. Um formulário que altera dados usa method="post": o navegador envia os campos no corpo da requisição, não na URL. A view os lê de request.POST, usando como chave o name de cada campo de entrada.

O Django acrescenta uma regra. Outro site poderia ocultar um formulário que envia dados para o seu site, e o navegador do visitante o enviaria junto com os cookies: um ataque chamado CSRF. Por isso, o Django rejeita qualquer POST sem um token secreto da sua própria página, com o erro 403 Forbidden. {% csrf_token %} dentro do formulário insere esse token. Um formulário de newsletter:

<form method="post">
    {% csrf_token %}
    <label for="email">Email</label>
    <input id="email" name="email" type="email">
    <button type="submit">Subscribe</button>
</form>

Um <label> identifica o campo de entrada cujo id corresponde ao seu for, e type="date" exibe um calendário.

challenge icon

Desafio

Fácil

Em new_event.html, escreva o formulário que a view espera:

  • Ele envia seus campos com POST e inclui o token CSRF.
  • Um campo de entrada, com um rótulo, para cada valor que a view lê. O campo de data exibe um calendário.
  • Um botão de envio.

Clique em Run, adicione um evento e, em seguida, abra a página inicial.

Experimente você mesmo

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

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

{% block content %}
<h1>Add an event</h1>
{# Escreva o formulário aqui #}
{% endblock %}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Forms

Pratique por conta própria: Playground de Django