• 获取登录用户信息


    错误信息

    AssertionError: Expected view UserListUpdate to be called with a URL keyword a
    rgument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on
     the view correctly.
    

    代码

    # views.py
    class UserUpdate(UpdateAPIView):
        """
        用户更改密码
        """
        queryset = User.objects.all()
        serializer_class = UserUpdateSerializer
        permission_classes = (IsAuthenticated,)
        
    # serializers.py
    class UserUpdateSerializer(serializers.ModelSerializer):
        class Meta:
    		....
        # 更新
        def update(self, instance, validated_data):
            instance.username = validated_data.get('username')
            instance.set_password(validated_data.get('password'))
            instance.save()
            return validated_data
    

    • 这次的需求是在用户登录的情况下,能够更改本人的密码,但是当发送put请求后会抛出异常,主要意思大概就是缺少主键(pk)

    解决思路

    • 我们需要在视图中获取当前登录用户信息
    • 然后传入序列化函数中
    class UserUpdate(UpdateAPIView):
        """
        用户更改密码
        """
        queryset = User.objects.all()
        serializer_class = UserUpdateSerializer
        permission_classes = (IsAuthenticated,)
        # 获取当前已经登录用户信息  传入
        def get_object(self):
            return self.request.user
    
  • 相关阅读:
    Jsp 4—— 内置对象
    Jsp 3—— 声明语法
    Jsp 2—— 小脚本
    CF1479B1 Painting the Array I
    P5337 [TJOI2019]甲苯先生的字符串
    CF19C Deletion of Repeats
    CF484D Kindergarten
    CF529B Group Photo 2 (online mirror version)
    CF1068B LCM
    CF554A Kyoya and Photobooks
  • 原文地址:https://www.cnblogs.com/jiumo/p/10901931.html
Copyright © 2020-2023  润新知