我正在構建和庫存 Web 應用程式,我正面臨這個錯誤。我正在嘗試從令牌中獲取用戶名以顯示自定義問候訊息并顯示用戶以某人身份登錄。
這是我的 Views.py,它以登錄用戶的身份從 localStorage 獲取令牌:
class UserDetails(APIView):
def post(self, request):
serializer = UserAccountTokenSendSerializer(data=request.data)
global token
if serializer.is_valid():
token = serializer.validated_data['token']
return Response(serializer.data)
def get(self):
user_id = Token.objects.get(key=token).user_id
details = User.objects.get(id=user_id)
serializer = UserDetails(details, many=False)
return Response(serializer.data)
class UserDetails(serializers.ModelSerializer):
class Meta:
model = User
fields = (
'username',
)
這是我的 Urls.py:
urlpatterns = [
path('get-user-token/', views.UserDetails.as_view()),
path('get-user-details/', views.UserDetails.as_view()),
]
這是我得到的錯誤:
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
TypeError: get() takes 1 positional argument but 2 were given
[15/Jun/2022 19:34:59] "GET /api/v1/get-user-details/ HTTP/1.1" 500 82239
uj5u.com熱心網友回復:
.get(…)方法 [Django-doc]也有一個request引數,即使你不使用它,所以:
class UserDetails(APIView):
# …
def get(self, request):
# …
pass
我強烈建議不要創建token全域變數。同一網路服務器可用于其他未經過身份驗證(正確)的用戶。查看 Django REST 框架檔案的身份驗證部分,了解有關如何身份驗證和檢查憑據的更多資訊。
注意:在 Django 中,基于類的視圖 (CBV) 通常有一個
…View后綴,以避免與模型名稱發生沖突。因此,您可能會考慮將視圖類重命名為UserDetailsView,而不是。UserDetails
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491781.html
