DRF Serializer .errors未返回'输入有效的IPv4地址。'在无效的IP条目上

时间:2014-06-04 20:27:20

标签: django django-models django-rest-framework

我有一个用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.']}

有关此事的任何想法,建议或澄清?我对一些明显的事实视而不见了吗?

如果你三次说出他的名字,我会听到汤姆克里斯蒂出现。汤姆克里斯蒂,汤姆克里斯蒂,汤姆克里斯蒂。

1 个答案:

答案 0 :(得分:2)

进一步调查显示DRF没有IpAddressField,但是django验证器可以作为args传递给序列化器字段。因此,验证IPV4地址而不添加IP地址可以按如下方式进行:

from django.core.validators import validate_ipv4_address
...
ip = serializers.CharField(validators=[validate_ipv4_address]