Python ValueError:视图未返回HttpResponse对象

Python ValueError:视图未返回HttpResponse对象,python,python-3.x,django,httpresponse,Python,Python 3.x,Django,Httpresponse,我正在写一个Django服务器。我必须为我的API类使用通用视图。现在,每当我使用postman测试代码时,一切都正常。但如果我使用其他客户端(如Talend API tester或我的Chrome浏览器)测试它,它会返回500个错误,表示API未返回任何HttpResponse对象。这是我的基本代码库 如果禁用csrf_豁免,则会出现csrf_豁免错误。如果我启用了它,则类将返回None。 @method_decorator(csrf_exempt, name='dispatch') clas

我正在写一个Django服务器。我必须为我的API类使用通用视图。现在,每当我使用postman测试代码时,一切都正常。但如果我使用其他客户端(如Talend API tester或我的Chrome浏览器)测试它,它会返回500个错误,表示API未返回任何HttpResponse对象。这是我的基本代码库

如果禁用csrf_豁免,则会出现csrf_豁免错误。如果我启用了它,则类将返回None。

@method_decorator(csrf_exempt, name='dispatch')
class ClassName(View):
    
    @throttle
    def post(self, request) -> JsonResponse:
        try:
            data = (json.loads(request.body))
        except JSONDecodeError:
            # decoding error of Json File.
            msg = "An error occurred while decoding the input"
            return message_handler(msg, 500)
        
        number = data.get("number", None)


        if number is None:
            msg = "number key is missing from the payload"
            return message_handler(msg, 400)
    
        if len(number) == 0:
            msg = "number number cannot be an empty string"
            return message_handler(msg, 400)
    
        if len(number) > 30:
            msg = "Maximum 30 characters are supported for car number key"
            return message_handler(msg, 400)
        
        ......
        some other application logic
        ......
        
        return JsonResponse({
            "status": True,
            "message": "",
        }, status=200)


def message_handler(message: str, status_code: int, status: bool = False) -> JsonResponse:
    return JsonResponse({
        "status": status,
        "message": message,
    }, status=status_code)
我所有的API都使用相同的格式,它们返回一个JsonResponse,那么我做错了什么

更新#1: 消息处理程序是一个通用函数。还有五个其他的回复,所有回复都使用通用函数。代码已更新

更新#2

错误似乎与装饰器(油门)有关。下面是油门代码:

def throttle(function):
    @functools.wraps(function)
    def wrapper(self, request, *args, **kwargs):
        try:
            last_request_at = request.session[LAST_REQUEST_KEY]
        except KeyError:
            last_request_at = None
        
         reequest.session[LAST_REQUEST_KEY] = last_request_at
         return function(self, request, *args, **kwargs)
    return wrapper
如果在类上放置
@method\u decorator(throttle,name='post')
,我会得到以下错误

TypeError: wrapper() missing 1 required positional argument: 'request'

什么是
message\u handler
,还有其他回报吗?@klauds。我用更多的代码更新了这个问题
message\u handler
是一个返回
JsonResponse
对象的通用函数。如果您使用Chrome访问它,您只是在执行GET请求吗?您没有实现def get()或@require_http_方法,因此这将返回一个错误。@TimNyborg我正在Chrome上使用一个发送Post请求的应用程序。我还有其他课程也有同样的问题。
csrf\u excempt
会有问题吗?@O\u O打印(类型(编号))会给你什么输出?在
number=data.get(“number”,None)
之后写入它。