Formularz POST
Część sekcji Formularze ścieżki Django w Coddy. Lekcja 2 z 20.
Strona /events/new/ i jej widok są gotowe, ale nie ma na niej formularza do dodawania wydarzenia. Formularz, który zmienia dane, używa method="post": przeglądarka wysyła pola w treści żądania, a nie w adresie URL. Widok odczytuje je z request.POST, używając wartości name każdego pola jako klucza.
Django dodaje jedną zasadę. Inna witryna mogłaby ukryć formularz wysyłający żądanie do Twojej witryny, a przeglądarka odwiedzającej ją osoby wysłałaby je wraz z jej plikami cookie: to atak nazywany CSRF. Dlatego Django odrzuca każde żądanie POST bez tajnego tokenu z Twojej własnej strony i zwraca błąd 403 Forbidden. {% csrf_token %} umieszczone w formularzu wstawia ten token. Formularz newslettera:
<form method="post">
{% csrf_token %}
<label for="email">Email</label>
<input id="email" name="email" type="email">
<button type="submit">Subscribe</button>
</form>Znacznik <label> opisuje pole, którego id jest zgodne z jego wartością for, a type="date" wyświetla kalendarz.
Wyzwanie
ŁatwyW pliku new_event.html napisz formularz, którego oczekuje widok:
- Wysyła pola metodą POST i zawiera token CSRF.
- Jedno pole wejściowe z etykietą dla każdej wartości odczytywanej przez widok. Pole daty wyświetla kalendarz.
- Przycisk przesyłania.
Naciśnij Run, dodaj wydarzenie, a następnie otwórz stronę główną.
Spróbuj swoich sił
{% extends "events/base.html" %}
{% block title %}Add an event{% endblock %}
{% block content %}
<h1>Add an event</h1>
{# Wpisz tutaj formularz #}
{% endblock %}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Formularze
Poćwicz samodzielnie: Edytor online Django