我正在創建一個注銷視圖,以使用simplejwt從我的django restframework注銷。沒有直接的方法來注銷,所以只有將重繪 令牌列入黑名單才是解決之道。
這些列印陳述句可以正常作業,所以它確實將令牌列入了黑名單,但是回傳陳述句沒有回傳任何東西,這是為什么,我如何才能回傳一個Response呢?我猜測save函式沒有回傳任何東西,這是真的嗎?
class LogoutSerializer(serializers.Serializer)。
refresh = serializers.CharField()
def validate(self, attrs)。
self.token = attrs['refresh']
return attrs
def save(self, **kwargs)。
try:
RefreshToken(self.token).blacklist()
print('done')
return Response({'msg':'token has been blacklisted'})
except TokenError:
print('not done')
return Response({'msg':'token is expired or blacklisted'})
views.py
class LogoutAPIView(APIView)。
serializer_class = LogoutSerializer
permission_classes = [IsAuthenticated]
def post(self, request)。
serializer = self.serializer_class(data = request.data)
serializer.is_valid(raise_exception = True)
序列化器.保存()
return Response(status = status.HTTP_204_NO_CONTENT)
uj5u.com熱心網友回復:
def post(self, request)。
serializer = self.serializer_class(data = request.data)
serializer.is_valid(raise_exception = True)
序列化器.保存()
return Response(status = status.HTTP_204_NO_CONTENT) # 這是你實際回傳給客戶端的回應。
如果你想在序列化器中回傳回應,你可以這樣做:
class LogoutSerializer(serializers.Serializer)。
refresh = serializers.CharField()
def validate(self, attrs)。
self.token = attrs['refresh']
return attrs
def save(self, **kwargs)。
RefreshToken(self.token).blacklist()
然后:
def post(self, request)。
serializer = self.serializer_class(data = request.data)
serializer.is_valid(raise_exception = True)
try:
serializer.save()
return Response({'msg':'token has been blacklisted'})
except TokenError:
return Response({'msg':'token is expired or blacklisted')
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/307469.html
標籤:
