我只是在写表单。但是我想对 hostname
进行自定义验证。如果类型为A
,则验证它是一个域名,否则如果它是type = PTR
则验证它是一个IP地址
。这个逻辑应该放在表单还是视图中?
RECORD_CHOICES = (
('A','A'),
('Cname','CNAME'),
('PTR', 'PTR'),
)
class CacheCheck(forms.Form):
type = forms.TypedChoiceField(choices=formfields.TYPE_CHOICES, initial='FIXED')
record = forms.TypedChoiceField(choices=formfields.RECORD_CHOICES, initial='FIXED')
hostname = forms.CharField(max_length=100)
def clean(self):
cleaned_data = super(CacheCheck, self).clean()
record = cleaned_data.get("record")
if record == "PTR":
hostname = forms.GenericIPAddressField(label=("ip address"))
else record == "A":
hostname = forms.RegexField(label=("hostname"), max_length=31, regex=r'[a-zA-Z0-9-_]*\.[a-zA-Z]{2,6}'
同时,传递给CacheCheck类的forms.Form是一种mixin还是子类化?