Python 在ListAPIView中引发错误请求400异常
当用户未提供令牌或令牌无效时,我试图引发400异常。我的代码如下: 这是我的exceptions.py文件: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'
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消息。有一个示例说明如何处理自定义异常,正确设置状态代码。我在询问之前检查了文档,如果它对我有效,我不会问的。。