📅  最后修改于: 2023-12-03 14:41:22.946000             🧑  作者: Mango
在Django中,GenericIPAddressField
是一个用于表示IP地址的表单字段。该字段接受IPv4和IPv6地址,并且还允许使用CIDR前缀来表示网络地址。
在定义Django模型或表单时,可以使用GenericIPAddressField
作为字段类型。以下是GenericIPAddressField
的语法:
from django.db import models
class MyModel(models.Model):
ip_address = models.GenericIPAddressField()
from django import forms
class MyForm(forms.Form):
ip_address = forms.GenericIPAddressField()
GenericIPAddressField
可以接受以下参数:
protocol
: 参数用于指定该字段应该接受的IP协议,可以是'django.db.models.fields.IPAddressField.IPv4','django.db.models.fields.IPAddressField.IPv6'或None(默认),允许任何IP协议。unpack_ipv4
: 如果设置为True
,则该字段将将IPv4地址视为4个整数而不是字符串。validators
: 用于验证字段值的验证器列表。from django.db import models
class Host(models.Model):
name = models.CharField(max_length=100)
ip_address = models.GenericIPAddressField()
from django import forms
class HostForm(forms.Form):
name = forms.CharField(max_length=100)
ip_address = forms.GenericIPAddressField()
GenericIPAddressField
在表单验证期间接受IPv4和IPv6地址(带或不带CIDR前缀)。但是,在模型验证期间,仅允许IPv4和IPv6地址。对于IPv4地址,可以使用点分十进制表示法或4个整数(如果使用unpack_ipv4=True
)。GenericIPAddressField
必须显式地声明为可为空(即添加null=True
),否则会引发django.core.exceptions.ValidationError: ['This field cannot be null.']
异常。protocol
参数,GenericIPAddressField
将允许任何IP地址格式。在要求特定IP地址格式的情况下,应使用相应的IPAddressField
字段。