Как аутентифицировать пользователя из mysql в django?

Я хочу реализовать приложение для входа в систему. Вся информация о пользователях находится в таблице под названием 'admin_users'. Я использую mysql сервер с помощью xampp.

Когда я аутентифицируюсь с помощью user = authenticate(username=username,password=password). При печати пользователя я получаю None.

Я новичок в django и не могу понять, что не так. Если я делаю AdminUsers.objects.all() я могу вывести всю информацию о таблице.

models.py

class AdminUsers(models.Model):
    username=models.CharField(max_length=50)
    firstname=models.CharField(max_length=50)
    department=models.CharField(max_length=50)
    mail=models.CharField(max_length=50)
    id=models.IntegerField(primary_key=True)
    password=models.CharField(max_length=200)
    class Meta:
        db_table="admin_users"

view.py

def login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username,password=password)
        print(user)
    return render(request,'AdminUsers/login.html')

мой index.html содержит простые формы с именем пользователя и паролем.

settings.py

Вам нужно вставить это в настройки: AUTH_USER_MODEL = 'AppName.AdminUsers' (замените AppName на имя приложения, содержащего AdminUsers).

Ваша пользовательская модель User должна наследоваться от AbstractUser, чтобы быть совместимой с системой аутентификации (сейчас она не работает):

class AdminUsers(AbstractUser):
    department=models.CharField(max_length=50)
    
    class Meta:
        db_table='admin_users'

Теперь AdminUsers будет наследовать поля AbstractUser (username, email, password, is_staff, ...), читайте это для details. Если вы уже выполнили миграции, вам нужно удалить миграции модели User по умолчанию.

Обратите также внимание, что модель следует назвать 'AdminUser', а не 'AdminUsers'.

Не совсем понятно, какую цель вы преследуете, используя модель AdminUsers. Стандартная модель пользователя django имеет такие флаги, как is_staff и is_superuser, которые вы можете использовать для разделения пользователей и их прав относительно того, к чему они могут получить доступ в приложении. Посмотрите документацию по модели пользователя здесь

Вернуться на верх