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 Ereignis hinzuzufügen. Ein Formular, das Daten ändert, verwendet method="post": Der Browser sendet die Felder im Anfragerumpf und nicht in der URL. Die View liest sie aus request.POST, wobei jeder Eingabe das jeweilige name zugeordnet ist.

Django fügt eine Regel hinzu. Eine andere Website könnte ein Formular verbergen, das Daten an deine Website sendet, und der Browser des Besuchers würde es zusammen mit seinen Cookies abschicken: ein Angriff namens CSRF. Deshalb weist Django jede POST-Anfrage 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> benennt das Eingabefeld, dessen id mit seinem for übereinstimmt, und type="date" zeigt einen Kalender an.

challenge icon

Aufgabe

Einfach

Schreibe in new_event.html das Formular, das die View erwartet:

  • Es sendet seine Felder mit POST und enthält das CSRF-Token.
  • Eine Eingabe mit Beschriftung für jeden Wert, den die View ausliest. Das Datumsfeld zeigt einen Kalender an.
  • Eine Schaltfläche zum Absenden.

Klicke auf „Run“, füge eine Veranstaltung hinzu und öffne dann die Startseite.

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