设置了 BaseUserManager 的 Django 自定义用户模型 is_active=True 不工作
Django custom user model with BaseUserManager set is_active=True not working
我正在使用 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
但是当注册为其他用户类型时它不工作。
有什么问题吗?
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'))
我正在使用 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
但是当注册为其他用户类型时它不工作。
有什么问题吗?
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'))