Пожалуйста, введите правильный телефон и пароль для учетной записи персонала |Джанго |Пользовательская модель пользователя Аутентификация не удалась - PullRequest
0 голосов
/ 18 октября 2019

Я создал пользовательскую модель пользователя, а затем создал пользователя, используя python manage.py createuperuser, и тот же пользователь может войти на сайт администратора. Затем я использовал ту же модель для регистрации другого пользователя, использующего страницу HTML регистрации , и объект пользователя создается в db с пользователем в качестве персонала и active = True, который работает, как и ожидалосьТем не менее, при входе через логин администратора и пользовательскую страницу входа он возвращает объект пользователя = Нет и отображает приведенную ниже ошибку.

Пожалуйста, введите правильный телефон и пароль дляличный кабинет. Обратите внимание, что оба поля могут быть регистрозависимыми.

Примечание: формы django не используются.

models.py

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
class UserManager(BaseUserManager):

    def create_user(self, phone, password=None, is_active=True, is_staff=True, is_admin=False):
        if not phone:
            raise ValueError("Users must have a valid phone number")
        if not password:
            raise ValueError("Users must have a password")
        user = self.model(phone=phone)
        user.set_password(password)
        user.active = is_active
        user.staff = is_staff
        user.admin = is_admin
        user.save(using=self._db)
        return user

    def create_staffuser(self, phone, password=None):
        user = self.create_user(
            phone,
            password=password,
            is_staff=True

        )
        return user

    def create_superuser(self, phone, password=None):
        user = self.create_user(
            phone,
            password=password,
            is_staff=True,
            is_admin=True

        )
        return user


class MyUser(AbstractBaseUser, PermissionsMixin):

    phone = models.CharField(primary_key=True, max_length=12, unique=True)
    email = models.EmailField()
    date_joined = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=True)
    staff = models.BooleanField(default=False)
    admin = models.BooleanField(default=False)

    USERNAME_FIELD = 'phone'
    REQUIRED_FIELDS = []

    objects = UserManager()

    def __str__(self):
        return self.phone

    @property
    def is_staff(self):
        return self.staff

    @property
    def is_admin(self):
        return self.admin

    @property
    def is_active(self):
        return self.active

    @property
    def is_superuser(self):
        return self.is_admin

views.py

def mock(request):

     if request.method == "POST":

          phone = request.POST['phone']
          print("User Join", phone)
          password = request.POST['password']
          password = make_password(password)

          user = Users.objects.create_user(phone=phone, password=password)
          user.save()
          print(request.user)
          return render(request, "user/register.html")

     else:
...