【发布时间】:2021-11-07 03:13:30
【问题描述】:
我试图在 Django 中使用 post() 和 get() 两种方法仅使用一个视图类。 Post 用于获取我想在 "get()" 中提供的用户会话令牌,以便我可以识别当前用户并通过 Serializer 使用相同的视图发送用户详细信息。我想使用该令牌通过 user = Tokens.objects.get(key=token) 获取名称以获取用户名,然后过滤 User.objects.get(username=user) 在前端发布用户数据。我怎样才能在 def get() 中提供“令牌”,以便我可以使用它?谢谢!
这是我的 View.py:
class UserDetails(APIView):
def post(self, request, *args):
serializer = UserAccountTokenSendSerializer(data=request.data)
if serializer.is_valid():
global token
token = serializer.validated_data['token']
self.get(token)
# user = Token.objects.get(key=token).user
# global current_user
# current_user = User.objects.get(username=user)
# email = User.objects.get(email=user)
# print(current_user, email)
return Response(serializer.data)
def get(self, request, *tokens):
username = Token.objects.get(key=token).user
email = User.objects.get(username=username).email
serializer = UserAccount(username, email, many=True)
return Response(serializer.data)
这些是我发布和获取数据的 2 个序列化程序:
class UserAccountTokenSendSerializer(serializers.ModelSerializer):
class Meta:
model = UserAccountTokenSend
fields = (
'token',
)
class UserAccount(serializers.ModelSerializer):
class Meta:
model = User
fields = (
'first_name',
'last_name',
'email',
'username',
)
这是我将令牌从前端发送到后端的模型:
class UserAccountTokenSend(models.Model):
token = models.CharField(max_length=255)
这是我的 urls.py:
path('get-user-tokens/', views.UserDetails.as_view()),
path('get-user-details/', views.UserDetails.as_view()),
【问题讨论】:
标签: javascript python django vue.js django-rest-framework