Become a sponsor

统一使用 R 模块封装 API 响应,所有接口返回一致的 JSON 格式,便于前端统一处理。
核心原则
R.ok() 或 R.failed() 返回,禁止直接返回 dictcode=0,失败响应 code=1code、data、msg、ok 四个字段{
"code": 0,
"data": { ... },
"msg": "操作成功",
"ok": true
}{
"code": 1,
"data": null,
"msg": "错误信息",
"ok": false
}{
"code": 0,
"data": {
"records": [ ... ],
"total": 100,
"size": 10,
"current": 1,
"pages": 10
},
"msg": "操作成功",
"ok": true
}from utils import R
# 基础成功响应
return R.ok()
# 带数据的成功响应
return R.ok(data=user_info)
# 自定义提示消息
return R.ok(msg='添加成功')
# 附加额外字段(如 count)
return R.ok(data=result, count=total)# 基础失败响应
return R.failed()
# 自定义错误消息
return R.failed('岗位名称不能重复')
# 自定义错误码和消息
return R.failed(msg='未授权', code=401)| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 状态码:0=成功,1=失败 |
data | any/null | 响应数据,失败时为 null |
msg | string | 提示消息 |
ok | boolean | 是否成功 |
| 状态码 | 含义 | 使用场景 |
|---|---|---|
| 0 | 成功 | 操作成功 |
| 1 | 失败 | 业务逻辑失败(如参数校验、唯一性冲突) |
错误码与 HTTP 状态码
业务错误码(code 字段)始终为 0 或 1,HTTP 状态码始终为 200。401/403 等仅在中间件中使用,常规业务错误统一返回 code=1。
from utils import R
# 查询详情:service 返回 dict,view 包 R.ok
class ExampleDetailView(PermissionRequired, View):
def get(self, request, id):
result = services.get_example_detail(id)
return R.ok(data=result)
# 添加记录:service 直接返回 R 对象
class ExampleAddView(PermissionRequired, View):
def post(self, request):
return services.add_example(request)
# 删除记录:service 直接返回 R 对象
class ExampleDeleteView(PermissionRequired, View):
def delete(self, request, id):
return services.delete_examples(id)响应封装层级
R.ok(data=page_data)R.ok(data=result)R 对象Django 表单验证错误由 regular.get_err(form) 转换为标准格式:
{
"code": 1,
"data": null,
"msg": "案例名称不能为空",
"ok": false
}API 响应规范通过 R 模块统一封装:R.ok() 返回成功、R.failed() 返回失败。所有响应保持 {code, data, msg, ok} 四字段结构,HTTP 状态码始终为 200。业务层错误统一用 code=1,前端只需判断 ok 字段即可。