Ein Feld überprüfen
Teil des Abschnitts Formulare der Django-Journey von Coddy. Lektion 10 von 20.
Das Board akzeptiert Ereignisse, die auf das letzte Jahr datiert sind. Die integrierten Regeln kennen Typen und Grenzwerte, aber nicht deine Website. Eine eigene Regel für ein Feld kommt in eine Methode, die clean_ plus den Namen des Feldes heißt. 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 darunter.
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.
Klicke auf „Ausführen“ und füge ein Ereignis mit dem Datum von gestern hinzu.
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