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

发布于 2022-09-04 17:58:17 字数 1020 浏览 8 评论 0

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一萌ing 2022-09-11 17:58:17
from django.contrib.auth import login
# ...
login(request, user)
腻橙味 2022-09-11 17:58:17

self.request.user 是个对象,你这样赋值不报错么?

self.request.user = user 

如果是项目使用的话,还是不推荐自己写,当然自己学习另说。

请参看:authentication

青柠芒果 2022-09-11 17:58:17

from django.contrib import auth
...

user = auth.authenticate(username= username, password= password)
if user is not None and user.is_active:
    auth.login(request, user)
找个人就嫁了吧 2022-09-11 17:58:17

这个就是django,这个和drf有什么关系吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文