📜  GenericIPAddressField – Django 表单(1)

📅  最后修改于: 2023-12-03 14:41:22.946000             🧑  作者: Mango

GenericIPAddressField - Django表单

在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字段。
  • 由于网络安全等原因,如果要在公用互联网上使用IP地址,请小心操作,建议使用安全的代理服务器或使用IP地址转换技术,例如NAT(网络地址转换)。