400 error详解

关于对用户输入的校验,由于是drf内置的功能,且未提供相应的错误信息的解释,在此做个说明:

关于输入的整体格式问题

drf的校验器可分为两种用法:
1、直接使用,按照校验器声明的字段、字段类型来进行校验
2、作为校验器的list来使用,list中每个都是一个校验器,再校验

如果要求整体为list,而传递的非list

{
    "non_field_errors": [
        "期望为一个包含物件的列表,得到的类型是“dict”。"
    ]
}

如果要求整体为dict,而传递的非dict

{
    "non_field_errors": [
        "无效数据。期待为字典类型,得到的是 list 。"
    ]
}

对应校验器的字段缺失

如果校验器中字段声明为required=True,而在用户输入中没有包含该字段时:

要求整体为list,

返回一个报错信息列表,每个报错信息作为dict,格式为:

[
    {
        "loc": [
            "该字段是必填项。"
        ]
    }
]

要求整体为dict

返回的为一个报错信息作为dict,格式为:

{
    "tianqi": [
        "该字段是必填项。"
    ],
    "route_list": [
        "该字段是必填项。"
    ]
}

对应校验器的字段类型错误、范围错误和其他校验错误

可参照上述字段缺失时的说明,只是其中的msg列表则变为类型不匹配等信息

{
    "tianqi": [
        "no tianqi"
    ],
    "route_list": [
        "no route_dict"
    ]
}

{
    "tianqi": [
        "gps should have 2 element: [longitude,latitude]"
    ],
    "route_list": [
        "no route_dict"
    ]
}

你可能感兴趣的:(400 error详解)