DRF通过功能传输错误

时间:2019-05-10 00:02:43

标签: python django error-handling django-rest-framework

我知道这个问题可能已经被提出或非常明显,但是我找不到任何东西。

假设我们在views.py中有此方法:

def my_api_view(request):
    if request.method == "POST":
        return HttpResponse(other_function())
    else:
        return HttpResponse("{UERR:%s}" % {UERR_POST_REQUEST_EXPECTED})

其中other_function()是Django应用之外的另一个目录中另一个文件中的函数:

def other_function():
    a = function1()
    b = function2()
    return function3(a,b)

问题:如果other_function()function1()function2()function3(a,b)出了问题,我们如何使我们的视图返回HttpResponse有错误吗?例如,如果function1()访问不可用的资源。

1 个答案:

答案 0 :(得分:0)

有错误的HttpResponse通常只是带有400状态代码的响应(表明客户端请求有错误,而不是您的服务器)

def my_api_view(request):
    if request.method == "POST":
        return HttpResponse(other_function())
    else:
        return HttpResponse("{UERR:%s}" % {UERR_POST_REQUEST_EXPECTED}, status=400)

如果您使用rest框架,则约定是返回rest_framework.response.Response

from rest_framework.response import Response
from rest_framework import status
def my_api_view(request):
    if request.method == "POST":
        return Response(other_function())
    else:
        return Response("{UERR:%s}" % {UERR_POST_REQUEST_EXPECTED}, status=status.HTTP_400_BAD_REQUEST)