【问题标题】:Django REST framework and form validationDjango REST 框架和表单验证
【发布时间】:2015-08-07 13:58:09
【问题描述】:

我开始使用 Django REST 框架,我发现该框架没有相同级别的表单验证。如果我使用表单验证,我将端点作为表单,并序列化数据,这似乎使用框架没有好处。我该如何解决这个问题?

【问题讨论】:

  • 我不确定我是否理解这里的问题。是您无法获得与正常形式相同程度的验证,还是您的验证不起作用? DRF validation docs 非常全面...
  • 其实我在这里,我相信,同样的问题。 @jvc26 链接的 DRF 文档似乎主要涵盖字段验证。我也想知道如何做相当于表单级别的验证,就像 Django 本身能够做的那样。例如,我正在尝试添加验证以确保开始日期早于结束日期。我在任何地方都找不到示例。
  • jvc26, 是的,DRF 有一个合理的验证级别,但是从表单验证开始,它缺少一些功能,例如表单字段渲染,据我收集,它宣布将进行调整,但不知道什么时候。

标签: django forms validation rest frameworks


【解决方案1】:

假设您指的是object 级别验证。 (即同时作用于多个字段)您需要在序列化程序中执行此操作(根据serializer docs),这是通过覆盖来完成的:

def validate(self, data):

关于序列化程序类。

一个例子(来自包含的链接):

def validate(self, data):
    """
    Check that the start is before the stop.
    """
    if data['start'] > data['finish']:
        raise serializers.ValidationError("finish must occur after start")
    return data

【讨论】:

  • 这对我有用——这正是我试图在文档中找到的,谢谢!如果该部分是从文档中的验证器页面链接到的,那就太好了。
猜你喜欢
  • 2019-02-20
  • 2013-06-29
  • 2017-09-26
  • 2017-11-02
  • 1970-01-01
  • 2015-08-17
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多