【发布时间】:2018-11-02 07:52:32
【问题描述】:
我在 ListAPIView 中使用 get_queryset
我想检查用户的访问令牌,在提供列表之前,我完成了以下操作,但问题是 get_query 设置不返回响应,有没有办法返回响应,或者我应该使用替代方法:
这是我在 views.py 中的课程:
class ListProductsOfCategory(generics.ListAPIView):
serializer_class = ProductSerializer
lookup_url_kwarg = 'category_id'
def get_queryset(self):
# I get the token here from the headers
token = self.request.META.get("HTTP_TOKEN", "")
if not token:
return Response(
data={
"message": "no token!"
},
status=status.HTTP_400_BAD_REQUEST
)
if not UserAccess.objects.filter(accessToken=token).exists():
return Response(
data={
"message": "invalid token!"
},
status=status.HTTP_400_BAD_REQUEST
)
category_id = self.kwargs.get(self.lookup_url_kwarg)
return Product.objects.filter(category_id=category_id)
请注意,如果我删除了与令牌相关的部分,则一切正常。
提前致谢。
上次更新后,这是回复:
【问题讨论】:
-
用 serializer.ValidationError 更新了我的分析器(默认 http 代码 400)
-
您应该为此使用身份验证和权限类。这将是更好的方法。
标签: python django django-rest-framework