Django/DRF范围验证
这更像是一个概念性的问题。我不是在寻找代码示例答案。在使用Django和DRF时,只需深入了解验证 考虑以下模型:Django/DRF范围验证,django,python-2.7,django-rest-framework,Django,Python 2.7,Django Rest Framework,这更像是一个概念性的问题。我不是在寻找代码示例答案。在使用Django和DRF时,只需深入了解验证 考虑以下模型: class Store(models.Model): id = models.CharField() products = JsonField(default='[]') regexp = models.CharField(max_length=255) 我使用的是Django REST框架,我有一个序列化程序,可以为StoreView序列化此模型 我想强
class Store(models.Model):
id = models.CharField()
products = JsonField(default='[]')
regexp = models.CharField(max_length=255)
我使用的是Django REST框架,我有一个序列化程序,可以为StoreView
序列化此模型
我想强制执行一些验证。例如,我希望产品
采用以下形式:{“id”:x,“可选标题”:y}
,并且我希望对regexp
执行一些正则表达式验证
我如何在一个地方执行此模型的验证,并且仍然获得正确的错误返回。所谓“正确的错误返回”,我的意思是当我从API
客户端接收到一些错误负载时,我应该返回一个400错误请求
,但是如果我在模型级别创建一个对象,我也应该返回一个正常的DjangoValidationError
我看不出序列化程序级别验证的优势。在我看来,如果我想保证坏对象永远不会进入数据库,我只需要在模型级别复制我的验证。您可以在serializer类中定义
验证方法
def validate_regexp(obj,regex):
#your regex validation goes here
#valid_regex = .....
if not valid_regex:
raise serializers.ValidationError("Regex invalid")
return regex
这根本没有解决这个问题。请再读一遍。