You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DRF报错视图firstapp.views.perticular_customers返回None而非HttpResponse如何解决?

问题原因
  • 核心错误是请求方法的判断逻辑写错:代码中直接将request请求对象本身和'GET'/'PUT'/'DELETE'字符串做相等判断,该条件永远不可能成立。所有分支都没有命中的情况下,函数执行完成后没有返回任何HttpResponse对象,默认返回None,触发了对应报错。
  • 补充:Django的视图要求必须返回HttpResponse对象(或其子类,比如JsonResponse、HttpResponseNotFound等),否则就会抛出该错误。
解决方法

将视图中所有请求方法判断的request替换为request.method即可,修改后的完整代码如下:

@csrf_exempt
def perticular_customers(request, var):

    try:
        customer = Customers.objects.get(id=var)
    except Customers.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'GET':
        serialize = CustomersSerializer(customer)
        return JsonResponse(serialize.data)

    elif request.method == 'PUT':
        data = JSONParser().parse(request)
        serialized = CustomersSerializer(customer, data=data)
        if serialized.is_valid():
            serialized.save()
            return JsonResponse(serialized.data)
        return JsonResponse(serialized.errors, status=400)

    elif request.method == 'DELETE':
        customer.delete()
        return HttpResponse(status=204)

内容的提问来源于stack exchange,提问作者deep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 04:39:00