Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

W 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 %}
quiz iconSprawdź się

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