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"]Aufgabe
Einfach- Schreibe in
events/forms.pyEventForm:titleundplaceals Text mit höchstens 100 Zeichen,dateals Datum. - Prüfe in
new_eventdamit die POST-Anfrage. Wenn sie gültig ist, erstelle das Ereignis aus den konvertierten Werten und leite weiter. Wenn nicht, rendere die Seite miterror, das aufPlease 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
2Django-Formulare
Ein Django-FormularEin Formular erstellenÜbe selbstständig: Django-Playground