zoukankan      html  css  js  c++  java
  • 获取登录用户信息

    错误信息

    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
    
  • 相关阅读:
    Linux pmap 工具
    bzoj 1060 贪心
    bzoj 1076 状压DP
    bzoj 1150 贪心
    bzoj 1412 最小割 网络流
    bzoj 3212 线段树
    bzoj 1942 斜率优化DP
    bzoj 1876 高精
    bzoj 1880 最短路
    斜率优化DP讲解
  • 原文地址:https://www.cnblogs.com/jiumo/p/10901931.html
Copyright © 2011-2022 走看看