Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用自定义表单上创建的用户登录-Django_Django_Forms_Django Registration_Django Login_Django Custom User - Fatal编程技术网

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”。我该如何解决这个问题?