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 strona nie ma 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 każdego pola name jako klucza.

Django chroni też każdy formularz POST. Inna witryna mogłaby ukryć formularz wysyłający żądanie do twojej witryny, a przeglądarka odwiedzającego wysłałaby je razem z jego plikami cookie. Ten atak nazywa się fałszowaniem żądań między witrynami, w skrócie CSRF. Dlatego Django odrzuca każde żądanie POST bez tajnego tokenu z twojej własnej strony, zwracając 403 Forbidden. {% csrf_token %} umieszczone wewnątrz formularza zapisuje 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>

Element <label> opisuje pole wejściowe, którego id odpowiada jego wartości for, a type="date" wyświetla kalendarz.

challenge icon

Wyzwanie

Łatwy

W events/templates/events/new_event.html zastąp {# Write the form here #} formularzem.

  1. Użyj method="post" i umieść {% csrf_token %} jako pierwszy element. Bez niego Django odrzuci formularz, zwracając błąd 403.
  2. Dodaj opisane etykietami pola wejściowe dla title, date (z type="date") i place, a następnie przycisk przesyłania.

Dodaj wydarzenie, a następnie kliknij „Wszystkie wydarzenia”: pojawi się ono na liście.

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