如何使用Django rest_auth创建自定义登录视图? [英] how to create custom login view with Django rest_auth?

查看:0
本文介绍了如何使用Django rest_auth创建自定义登录视图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用django-rest-auth包创建一个带有电话号码的自定义登录。我只是在代码中使用rest_auth.views.LoginView来为令牌身份验证生成令牌。

这是我的序列化程序:

class LoginUserSerializer(serializers.Serializer):
    phone = serializers.CharField()
    password = serializers.CharField(
        style={'input_type': 'password'}, trim_whitespace=False)

    def validate(self, attrs):
        phone = attrs.get('phone')
        password = attrs.get('password')

        if phone and password:
            if User.objects.filter(phone=phone).exists():
                user = authenticate(request=self.context.get('request'),
                                    phone=phone, password=password)

            else:
                msg = {'detail': 'Phone number is not registered.',
                       'register': False}
                raise serializers.ValidationError(msg)

            if not user:
                msg = {
                    'detail': 'Unable to log in with provided credentials.', 'register': True}
                raise serializers.ValidationError(msg, code='authorization')

        else:
            msg = 'Must include "username" and "password".'
            raise serializers.ValidationError(msg, code='authorization')

        attrs['user'] = user
        return attrs

这是我的看法:

 from rest_auth.views import LoginView as RestLoginView

class Login(RestLoginView):
    permission_classes = (permissions.AllowAny,)

    def post(self, request, *args, **kwargs):
        serializer = LoginUserSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        login(request, user)
        return super().post(request, format=None)

当我运行服务器时,我有这个页面,我不想有用户名和电子邮件字段。我想要电话号码,而不是这些。我如何解决这个问题?

推荐答案

在settings.py中,我忘记添加:

REST_AUTH_SERIALIZERS = {
    'LOGIN_SERIALIZER': 'Accounts.serializers.LoginUserSerializer',
}

这篇关于如何使用Django rest_auth创建自定义登录视图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆