Menu
CoddyTech

Ein POST-Formular

Teil des Abschnitts Formulare der Django-Journey von Coddy. Lektion 2 von 20.

Die Seite /events/new/ und ihre View sind bereit, aber auf der Seite gibt es kein Formular, um ein Event hinzuzufügen. Ein Formular, das Daten ändert, verwendet method="post": Der Browser sendet die Felder im Body der Anfrage und nicht in der URL. Die View liest sie aus request.POST aus, wobei jeder Eintrag über das name des jeweiligen Eingabefelds abgefragt wird.

Django schützt außerdem jedes POST-Formular. Eine andere Website könnte ein Formular verbergen, das Daten an deine Website sendet, und der Browser des Besuchers würde es zusammen mit dessen Cookies senden. Dieser Angriff wird als Cross-Site-Request-Forgery bezeichnet, kurz CSRF. Deshalb weist Django jedes POST ohne ein geheimes Token von deiner eigenen Seite mit 403 Forbidden zurück. {% csrf_token %} innerhalb des Formulars fügt dieses Token ein. Ein Newsletter-Formular:

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

Ein <label> bezeichnet das Eingabefeld, dessen id mit seinem for übereinstimmt, und type="date" zeigt einen Kalender an.

challenge icon

Aufgabe

Einfach

Ersetze in events/templates/events/new_event.html {# Write the form here #} durch ein Formular.

  1. Verwende method="post" und setze {% csrf_token %} an den Anfang. Ohne dieses Token weist Django das Formular mit dem Statuscode 403 zurück.
  2. Füge beschriftete Eingabefelder für title, date (mit type="date") und place sowie einen Absende-Button hinzu.

Füge eine Veranstaltung hinzu und klicke dann auf „Alle Veranstaltungen“: Sie erscheint in der Liste.

Probier es selbst

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

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

{% block content %}
<h1>Add an event</h1>
{# Schreibe das Formular hier #}
{% endblock %}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Formulare

Übe selbstständig: Django-Playground