400 error详解
2018-07-25 本文已影响0人
xncode
关于对用户输入的校验,由于是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"
]
}