Python 在ListAPIView中引发错误请求400异常

Python 在ListAPIView中引发错误请求400异常,python,django,django-rest-framework,Python,Django,Django Rest Framework,当用户未提供令牌或令牌无效时,我试图引发400异常。我的代码如下: 这是我的exceptions.py文件: from rest_framework.exceptions import APIException, PermissionDenied class MissingTokenException(APIException): status_code = 400 default_detail = 'Your request does not contain token'

当用户未提供令牌或令牌无效时,我试图引发400异常。我的代码如下:

这是我的exceptions.py文件:

from rest_framework.exceptions import APIException, PermissionDenied


class MissingTokenException(APIException):
    status_code = 400
    default_detail = 'Your request does not contain token'
    default_code = 'no_token'


class InvalidTokenException(APIException):
    status_code = 400
    default_detail = 'Your request contain invalid token'
    default_code = 'invalid_token'
这是my views.py文件:

class ListProductsOfCategory(generics.ListAPIView):
    serializer_class = ProductSerializer
    lookup_url_kwarg = 'category_id'

    def dispatch(self, *args, **kwargs):
        token = self.request.META.get("HTTP_TOKEN", "")
        if not token:
            # here I wan to raise an error saying that no token provided.
           raise MissingTokenException
        if not UserAccess.objects.filter(accessToken=token).exists():
            # here I wan to raise an error saying that token provided is not valid.
           raise InvalidTokenException
        return super().dispatch(*args, **kwargs)

    def get_queryset(self):
        category_id = self.kwargs.get(self.lookup_url_kwarg)
        return Product.objects.filter(category_id=category_id)
我正在使用postman测试我的API:

如果有人能帮助我了解django和python,请告诉我

DRF句柄,包括捕获
APIException
。 如果您想在它之外引发一个
APIException
,这就是您的代码正在做的事情,那么您还必须捕获异常并调用异常处理程序。 还请注意,您可能会错过内容协商和其他一些事情


更好的处理方法是通过身份验证和权限执行检查。

根据您的屏幕截图,您的异常被正确引发。你期望什么不会发生?引发的错误是500内部服务器错误,我希望它是400错误请求,我还希望返回一条描述错误的JSON消息。有一个示例说明如何处理自定义异常,正确设置状态代码。我在询问之前检查了文档,如果它对我有效,我不会问的。。