0

ユーザーを作成するためのカスタムフォームを作成しました。
端末上で「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})

ここで何が欠けていますか?
ありがとう!

4

2 に答える 2