0

我有这个表格:

class NetworkInput(forms.Form):          
    IP = forms.GenericIPAddressField()     
    Netmask = forms.IntegerField()

用户应该能够输入 IPv4 或 IPv6 地址。根据 IP 版本,网络掩码的验证应如下所示:

import ipcalc
IP = ipcalc.IP(IP)
if IP.version() == 4:
    if Netmask > 29:
        raise ValidationError(u'%s is not big enough' % value)
else:
    if Netmask > 125:
        raise ValidationError(u'%s is not big enough' % value)

但我不知道在验证网络掩码时如何访问变量 IP。

4

1 回答 1

1

如https://docs.djangoproject.com/en/1.5/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other的 django 文档中所述

创建一个进行组合验证的 clean() 方法,例如

def clean(self):
    IP = self.cleaned_data['IP']
    Netmask = self.cleaned_data['Netmask']
    IP = ipcalc.IP(IP)
    if IP.version() == 4:
        if Netmask > 29:
            raise ValidationError(u'%s is not big enough' % value)
    else:
        if Netmask > 125:
            raise ValidationError(u'%s is not big enough' % value)
于 2013-10-16T10:26:29.430 回答