### CharFieldのバリデーション
– required
– min_length, max_length
– empty_value
class CheckForm(forms.Form): empty = forms.CharField(label='Empty', empty_value=True, widget=forms.TextInput(attrs={'class':'form-control'})) min = forms.CharField(label='Min', min_length=10, widget=forms.TextInput(attrs={'class':'form-control'})) max = forms.CharField(label='Max', max_length=10, widget=forms.TextInput(attrs={'class':'form-control'}))
### IntegerField/FloatFieldのバリデーション
– required
– min_value, max_value
class CheckForm(forms.Form): required = forms.IntegerField(label='Required', widget=forms.NumberInput(attrs={'class':'form-control'})) min = forms.IntegerField(label='Min', min_value=100, widget=forms.NumberInput(attrs={'class':'form-control'})) max = forms.IntegerField(label='Max', max_value=1000, widget=forms.NumberInput(attrs={'class':'form-control'}))
### 日時関連のバリデーション
– DateField, TimeField, DateTimeFieldでは日時の各値を表す記号を組み合わせて作成する
– %y, %m, %d, %H, %M, %S
class CheckForm(forms.Form): date = forms.DateField(label='Date', input_formats=['%d'], widget=forms.DateInput(attrs={'class':'form-control'})) time = forms.TimeField(label='Time', widget=forms.TimeInput(attrs={'class':'form-control'})) datetime = forms.DateTimeField(label='DateTime', widget=forms.DateTimeInput(attrs={'class':'form-control'}))
### バリデーションを追加
– Formクラスにメソッドを追加する
– raise ValidationError(“Error message”)
/hello/forms.py
from django import forms class CheckForm(forms.Form): str = forms.CharField(label='String', widget=forms.TextInput(attrs={'class':'form-control'})) def clean(self): cleaned_data = super().clean() str = cleaned_data['str'] if(str.lower().startswith('no')): raise forms.ValidationError('Your input "No!"')