Ein Feld überprüfen
Teil des Abschnitts Formulare der Django-Journey von Coddy. Lektion 10 von 20.
Das Formular akzeptiert ein Ereignis, das auf das letzte Jahr datiert ist. Djangos integrierte Prüfungen kennen Typen und Grenzen, aber nicht die Regeln deiner Website. Eine eigene Regel für ein Feld kommt in eine Methode namens clean_ plus den Namen des Feldes. Ein Anmeldeformular, das den Namen admin für das Personal reserviert:
class SignupForm(forms.Form):
username = forms.CharField(max_length=30)
def clean_username(self):
username = self.cleaned_data["username"]
if username.lower() == "admin":
raise forms.ValidationError("That name is reserved.")
return usernameis_valid() ruft sie nach den eigenen Prüfungen des Feldes auf, sodass der Wert bereits umgewandelt ist: Ein DateField liefert ein Datum. Das Auslösen von forms.ValidationError weist das Feld zurück, und die Meldung erscheint daneben.
Die Methode muss den Wert zurückgeben: Was sie zurückgibt, landet in cleaned_data. Ohne das return wird der Wert zu None.
Aufgabe
EinfachLehne in EventForm ein Datum vor dem heutigen Tag mit der Meldung The date cannot be in the past. ab. Ein Ereignis am heutigen Tag ist in Ordnung.
Füge ein Ereignis hinzu, das auf gestern datiert ist und im Format 2026-10-30 eingegeben wurde: Du siehst The date cannot be in the past.
Probier es selbst
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
description = forms.CharField(widget=forms.Textarea, required=False)
capacity = forms.IntegerField(min_value=1)
Alle Lektionen in Formulare
2Django-Formulare
Ein Django-FormularEin Formular erstellenÜbe selbstständig: Django-Playground