Can';t使用自定义表单上创建的用户登录-Django
我已经为创建用户编写了自定义表单。Can';t使用自定义表单上创建的用户登录-Django,django,forms,django-registration,django-login,django-custom-user,Django,Forms,Django Registration,Django Login,Django Custom User,我已经为创建用户编写了自定义表单。 登录适用于使用“python manage.py createsuperuser”在终端上创建的用户,但不适用于在网站上创建的用户。我已经检查过了,并且创作形式有效;我的意思是,用户是被创建的 这是表单 class CustomUserCreationForm(UserCreationForm): """ A form that creates a user, with no privileges, from the given email and passw
登录适用于使用“python manage.py createsuperuser”在终端上创建的用户,但不适用于在网站上创建的用户。我已经检查过了,并且创作形式有效;我的意思是,用户是被创建的 这是表单
class CustomUserCreationForm(UserCreationForm):
"""
A form that creates a user, with no privileges, from the given email and password.
"""
def __init__(self, *args, **kwargs):
super(CustomUserCreationForm, self).__init__(*args, **kwargs)
class Meta:
model = CustomUser
fields = ("email",)
模型
class CustomUser(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=254, unique=True, null=True)
first_name = models.CharField(max_length=254, blank=True)
second_name = models.CharField(max_length=254, blank=True)
email = models.EmailField(blank=True, unique=True)
address1 = models.CharField(max_length=254, blank=True)
address2 = models.CharField(max_length=254, blank=True)
area_code = models.CharField(max_length=20, blank=True)
country_code = models.CharField(max_length=10, blank=True)
date_joined = models.DateTimeField(_('date joined'), default=datetime.now())
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username', 'address1', 'address2', 'area_code', 'country_code']
objects = CustomUserManager()
class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')
def get_absolute_url(self):
return "/users/%s" % urlquote(self.email)
def get_full_name(self):
"""
Returns the first_name plus the last_name, with a space in between.
"""
return full_name.strip()
def get_short_name(self):
"""
Returns the first name for the user.
"""
return self.first_name
def email_user(self, subject, message, from_email=None):
"""
Sends an email to this user.
"""
send_email(subject, message, from_email, [self.email])
注册视图
def register(request):
registered = False
if request.method == 'POST':
user_form = CustomUserCreationForm(data=request.POST)
if user_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
registered = True
else:
print user_form.errors
else:
user_form = CustomUserCreationForm()
return render(request, 'register.html', {'user_form': user_form, 'registered': registered})
def login(request):
if request.method == 'POST':
login_form = CustomUserLoginForm(data=request.POST)
username = request.POST.get('username')
password = request.POST.get('password')
user = auth.authenticate(username=username, password=password)
if user:
if user.is_active:
auth.login(request, user)
return HttpResponseRedirect('/')
else:
return HttpResponse("Your account is disabled.")
else:
print "Invalid login details: {0}, {1}".format(username, password)
return HttpResponse("Invalid login details supplied. Get back to the <a href=\"/\">homepage</a>.")
else:
login_form = CustomUserLoginForm()
return render(request, 'login.html', {'login_form': login_form})
登录视图
def register(request):
registered = False
if request.method == 'POST':
user_form = CustomUserCreationForm(data=request.POST)
if user_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
registered = True
else:
print user_form.errors
else:
user_form = CustomUserCreationForm()
return render(request, 'register.html', {'user_form': user_form, 'registered': registered})
def login(request):
if request.method == 'POST':
login_form = CustomUserLoginForm(data=request.POST)
username = request.POST.get('username')
password = request.POST.get('password')
user = auth.authenticate(username=username, password=password)
if user:
if user.is_active:
auth.login(request, user)
return HttpResponseRedirect('/')
else:
return HttpResponse("Your account is disabled.")
else:
print "Invalid login details: {0}, {1}".format(username, password)
return HttpResponse("Invalid login details supplied. Get back to the <a href=\"/\">homepage</a>.")
else:
login_form = CustomUserLoginForm()
return render(request, 'login.html', {'login_form': login_form})
def登录(请求):
如果request.method==“POST”:
login\u form=CustomUserLoginForm(data=request.POST)
username=request.POST.get('username')
password=request.POST.get('password')
user=auth.authenticate(用户名=用户名,密码=密码)
如果用户:
如果user.u处于活动状态:
身份验证登录(请求、用户)
返回HttpResponseRedirect(“/”)
其他:
返回HttpResponse(“您的帐户已禁用。”)
其他:
打印“无效登录详细信息:{0},{1}”。格式(用户名、密码)
返回HttpResponse(“提供的登录详细信息无效。请返回到。”)
其他:
login\u form=CustomUserLoginForm()
返回呈现(请求'login.html',{'login\u form':login\u form})
我错过了什么?谢谢 首先修复类:
class CustomUser(AbstractUser, PermissionsMixin):
AbstractUser是一个真实的用户模型,BaseUser只是一个元类
要创建新用户,应在窗体或注册表视图中使用此行:
User.objects.create_user(username=username,email=email,password=password)
请注意,set\u password
用于更改密码,并在密码更改后注销此用户 首先修复类:
class CustomUser(AbstractUser, PermissionsMixin):
AbstractUser是一个真实的用户模型,BaseUser只是一个元类
要创建新用户,应在窗体或注册表视图中使用此行:
User.objects.create_user(username=username,email=email,password=password)
请注意,
set\u password
用于更改密码,并在密码更改后注销此用户 在将近三天的时间里,我一直在努力克服同样的问题。我甚至在后台写了认证。仅在此之后,表单上才会显示一条消息,说明用户未处于活动状态。在“保存方法”中,我将True指定给user.u是否处于活动状态
def save(self):
user = super().save(commit=False)
user.is_active = True
user.save()
这对我有用。我希望它也能对你起作用。(注意:我不知道规则,在接到通知不做类似的问题时,我也发布了相同的消息来帮助其他人。如果有人看到我关于其他问题的答案,请忽略它。上面的答案是经过编辑的,主要与本期有关)近三天来,我一直在努力克服相同的问题。我甚至在后台写了认证。仅在此之后,表单上才会显示一条消息,说明用户未处于活动状态。在“保存方法”中,我将True指定给user.u是否处于活动状态
def save(self):
user = super().save(commit=False)
user.is_active = True
user.save()
这对我有用。我希望它也能对你起作用。(注意:我不知道规则,并在收到通知不这样做时为类似问题发布了相同的消息,以帮助其他人。如果有人看到我对其他问题的回答,请忽略它。以上答案是经过编辑的,主要与此问题有关)如果我尝试这样做,错误是:“经理不在;'“auth.User”已被替换为“custom\u User.CustomUser”,我认为这是因为我定义了一个auth\u User\u模型=“custom\u User.CustomUser”。如何解决这个问题?如果我尝试这样做,错误是:“Manager不可用;”“auth.User”已被替换为“custom\u User.CustomUser”,我想这是因为我定义了一个auth\u User\u模型=“custom\u User.CustomUser”。我该如何解决这个问题?