设置了BaseUserManager的Django自定义用户模型\u active=True不工作

2024-04-25 05:54:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python(3.7)进行一个项目&;Django(3),我在其中实现了一个自定义用户模型,在用户管理器中,在create_user方法下我设置了user.is_active = True,但它不适用于注册

以下是我的实现:

class MyAccountManager(BaseUserManager):
    def create_user(self, email, fullname, password=None):
        if not email:
            raise ValueError('Users must provide the Email.')

        user = self.model(
            email=self.normalize_email(email),
            fullname=fullname,
        )
        user.set_password(password)
        user.is_active = True
        user.save(using=self._db)
        return user

    def create_superuser(self, email, fullname, password=None):
        user = self.create_user(
            email=self.normalize_email(email),
            fullname=fullname,
            password=password
        )
        user.is_admin = True
        user.is_staff = True
        user.is_active = True
        user.is_superuser = True
        user.save(using=self._db)
        return user

以下是我的signup视图:

def registration_view(request):
    if request.method == 'GET':
        return render(request, 'users/register.html')
    if request.method == 'POST':
        form = RegistrationForm(request.POST, request.FILES)
        print('get post req')
        data = {}
        if form.is_valid():
            form.save()
        else:
            print(form.errors)
            return HttpResponse(form.errors)

        return HttpResponseRedirect(reverse_lazy('users:login'))

createsuperuser工作正常,意味着它设置is_active = True但是当注册为其他用户类型时,它不工作。 有什么不对劲


Tags: 用户selfformtruereturnifisemail
1条回答
网友
1楼 · 发布于 2024-04-25 05:54:37
 def registration_view(request):
    if request.method == 'GET':
        return render(request, 'users/register.html')
    if request.method == 'POST':
        form = RegistrationForm(request.POST, request.FILES)
        print('get post req')
        data = {}
        if form.is_valid():
            user = form.save(commit=False)
            user.is_active = True
            user.save()
  
        else:
            print(form.errors)
            return HttpResponse(form.errors)

        return HttpResponseRedirect(reverse_lazy('users:login'))

相关问题 更多 >