Menu
CoddyTech

Ein Django-Formular

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

Du sendest das Formular ohne Datum ab, und die Website stürzt ab: Django kann leeren Text nicht in ein Datum umwandeln. Jedes Feld von Hand zu überprüfen, würde Code für jedes Feld und jeden Fehler erfordern.

Ein Django-Formular beschreibt die Felder einmalig in forms.py, und jedes Feld weiß, welche Werte es akzeptiert. Das Buchungsformular eines Restaurants:

from django import forms


class BookingForm(forms.Form):
    name = forms.CharField(max_length=50)
    day = forms.DateField()
    guests = forms.IntegerField()

Jedes Feld ist erforderlich, sofern du nichts anderes angibst, und ein CharField entfernt zuerst Leerzeichen, sodass ein Name, der nur aus Leerzeichen besteht, als leer gilt.

Erstelle in der View das Formular aus den empfangenen Daten und rufe is_valid() auf: Die Methode überprüft jedes Feld und gibt True oder False zurück. Anschließend enthält form.cleaned_data die in Python konvertierten Werte, sodass cleaned_data["day"] ein datetime.date und kein Text ist:

form = BookingForm(request.POST)
if form.is_valid():
    day = form.cleaned_data["day"]
challenge icon

Aufgabe

Einfach
  • Schreibe in events/forms.py EventForm: title und place als Text mit höchstens 100 Zeichen, date als Datum.
  • Prüfe in new_event damit die POST-Anfrage. Wenn sie gültig ist, erstelle das Ereignis aus den konvertierten Werten und leite weiter. Wenn nicht, rendere die Seite mit error, das auf Please check the form. gesetzt ist.

Drücke auf „Run“ und sende das Formular ohne Datum ab.

Probier es selbst

from django import forms

Alle Lektionen in Formulare

Übe selbstständig: Django-Playground