Sprawdzanie jednego pola
Część sekcji Formularze ścieżki Django w Coddy. Lekcja 10 z 20.
Tablica przyjmuje wydarzenia z datą z zeszłego roku. Wbudowane reguły znają typy i ograniczenia, ale nie znają Twojej witryny. Własną regułę dotyczącą jednego pola umieszcza się w metodzie o nazwie clean_ plus nazwa pola. Formularz rejestracyjny, który rezerwuje nazwę admin dla personelu:
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() wywołuje tę metodę po własnych sprawdzeniach pola, więc wartość jest już przekonwertowana: DateField zwraca datę. Zgłoszenie forms.ValidationError odrzuca pole, a komunikat pojawia się pod nim.
Metoda musi return wartość: to, co zwraca, trafia do cleaned_data. Bez return wartością staje się None.
Wyzwanie
ŁatwyW EventForm odrzuć datę wcześniejszą niż dzisiejsza, wyświetlając komunikat The date cannot be in the past. Dzisiejsza data wydarzenia jest dozwolona.
Naciśnij Run i dodaj wydarzenie z datą wczorajszą.
Spróbuj swoich sił
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)
Wszystkie lekcje w sekcji Formularze
2Formularze Django
Formularz DjangoWyświetlanie formularzaPoćwicz samodzielnie: Edytor online Django