我有一个用IPAddressField定义的django模型:
class ExampleModel(models.Model):
ip = models.IPAddressField('An IP Address')
对于我的API,我为此模型定义了一个HyperlinkedModelSerializer,它与ViewSet一起协调运行。但是,在测试针对我的API创建操作时,我没有收到通常期望验证的Django表单返回的所有错误。具体来说,如果我将'ip'字段留空,我会收到错误,如我所料:
{'ip': [u'This field is required.']}
但是,如果我使用无效的IP地址发布请求,例如:
{'ip': '10.3.'}
我希望serializer.errors包含类似于Django Forms验证器所做的错误,即:
{'ip': [u'Enter a valid IPv4 address.']}
有关此事的任何想法,建议或澄清?我对一些明显的事实视而不见了吗?
如果你三次说出他的名字,我会听到汤姆克里斯蒂出现。汤姆克里斯蒂,汤姆克里斯蒂,汤姆克里斯蒂。
答案 0 :(得分:2)
进一步调查显示DRF没有IpAddressField,但是django验证器可以作为args传递给序列化器字段。因此,验证IPV4地址而不添加IP地址可以按如下方式进行:
from django.core.validators import validate_ipv4_address
...
ip = serializers.CharField(validators=[validate_ipv4_address]