Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
401 views
in Technique[技术] by (71.8m points)

Django rest_framework 登录,如何记录已登录用户

class UserLoginAPIView(APIView):
    permission_classes = [AllowAny]
    queryset = User.objects.all()
    serializer_class = UserLoginSerializer

    def post(self, request, *args, **kwargs):
        data = request.data
        # 输出当前登录用户
        print(self.request.user)
        username = data.get('username')
        password = data.get('password')
        user = User.objects.get(username__iexact=username)
        if user.check_password(password):
            serializer = UserLoginSerializer(data=data)
            if serializer.is_valid(raise_exception=True):
                new_data = serializer.data
                # 记忆已登录用户
                self.request.user = user.id
                return Response(new_data, status=HTTP_200_OK)
            return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
        return Response('password error', HTTP_400_BAD_REQUEST)

这是我的views模块,当用户登录,我用self.request.user = user.id记忆登录用户id,但是实际上数据并未返回。

我该怎么做才能记住已登录id?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
from django.contrib.auth import login
# ...
login(request, user)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...