亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 get_queryset 中返回一個 Http 響應

在 get_queryset 中返回一個 Http 響應

慕田峪7331174 2021-08-05 16:31:37
我在 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)請注意,如果我刪除了與令牌相關的部分,則一切正常。提前致謝。上次更新后,這是回復:
查看完整描述

2 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

如果我做對了,我不是 100%,但我相信您可以只使用 DRF 提供的常規身份驗證機制。在這個特定示例中,我認為 DRF 文檔的這一部分應該向您展示如何以“DRF”方式進行操作:設置身份驗證方案


如果您將TokenAuthentication方案添加到您的應用程序,您不需要在您的get_queryset方法中驗證令牌,但您可以只使用裝飾器來限制對基于函數的視圖或permission_classes基于類的視圖的訪問:


基于視圖


我想這是你最感興趣的。


class ListProductsOfCategory(generics.ListAPIView):

    serializer_class = ProductSerializer

    lookup_url_kwarg = 'category_id'


    authentication_classes = (TokenAuthentication, ) # Add others if desired

    permission_classes = (IsAuthenticated,)

基于路由


如果您只想限制對某些路線的訪問(例如,僅發布或詳細信息視圖),那么您可以編寫自己的權限類。


查看完整回答
反對 回復 2021-08-05
  • 2 回答
  • 0 關注
  • 342 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號