Django Rest Framework 新用户注册并激活管理员

问题描述 投票:0回答:1

在旧的 Django 时代,我能够在每次注册用户数据时设置 is_activated 隐藏字段,以让新用户注册但无法登录。 需要管理员来激活帐户 - 完美。 使用 django 休息框架,我找不到执行相同操作的可能性。 我可以得到一个后...非常感谢你。

其他可能愚蠢的问题 - 我怎样才能防止用户在没有验证的情况下登录(不是电子邮件验证)

非常感谢

问候RR

我尝试使用网上找到的所有方法成功添加用户,但 is_active 始终为 true 而且看起来框架总是将此字段视为 true,因为它是一个用于停用帐户的管理功能 - 但这也是我喜欢做的。

到目前为止我所拥有的: 在views.py中

class RegisterApi(generics.GenericAPIView):
    serializer_class = RegisterSerializer
    def post(self, request, *args,  **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        return Response({
            "user": UserSerializer(user,    context=self.get_serializer_context()).data,
            "message": "User Created Successfully.  Now perform Login to get your token",
        })

和序列化器.py

class RegisterSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id','username','password')
        extra_kwargs = {
            'password':{'write_only': True}
        }
        def create(self, validated_data):
            user = User.objects.create_user(validated_data['username'],     password = validated_data['password'] )
            user.is_active = False  # is not working !!!!!!!!!!!
            return user


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'
        extra_kwargs = {
            'password':{
                'write_only': True
            }
        }


当我在 ModelSerializer 的 user.create 函数中设置

python user.is_active = False 
时没有错误,但响应和用户仍然为 True ...

django rest frameworks registration
1个回答
0
投票

找到答案.... 预保存信号请参见此处 参见答案 12

就像一个魅力......

© www.soinside.com 2019 - 2024. All rights reserved.