Menu
CoddyTech

Ein Django-Formular

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

Wird das Formular ohne Datum gesendet, stürzt die Website ab: Django kann leeren Text nicht in ein Datum umwandeln. Jedes Feld von Hand zu prü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. Ein CharField entfernt zuerst Leerzeichen, daher gilt ein Name, der nur aus Leerzeichen besteht, als leer.

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

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

Aufgabe

Einfach

Lass ein Django-Formular das neue Ereignis überprüfen.

  1. Schreibe in events/forms.py EventForm: title und place als Text mit bis zu 100 Zeichen, date als Datum.
  2. Erstelle in new_event das Formular aus request.POST. Wenn es gültig ist, erstelle das Ereignis aus form.cleaned_data und leite zu ihm weiter. Andernfalls setze error auf Please check the form.

Sende das Formular ohne Datum ab: Du siehst Please check the form.

Probier es selbst

from django import forms

Alle Lektionen in Formulare

Übe selbstständig: Django-Playground