Не удается установить пользовательский аутентификатор бэкенда django

Я пытаюсь изучить книгу django 3 на примерах, но не могу понять несколько моментов в пользовательской аутентификации django, например, почему имя пользователя и пароль передаются None и email=username и почему мы используем get_user

Вот код

from django.contrib.auth.models import User
class EmailAuthBackend(object):
     #Authenticate using an e-mail address
    def authenticate(self,request,username=None,password=None):
        try:
            user=User.objects.get(email=username)
            if user.check_password(password):
                return user
            return None
        except User.DoesNotExit:
            return None
    def get_user(self,user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExit:
            return None

в этой строке:

def authenticate(self,request,username=None,password=None):

username и password по умолчанию равны None, это сделано для того, чтобы убедиться, что если пользователь не отправил сюда никаких username или password, то по умолчанию будет None. В противном случае, если пользователь не отправил сюда ни username, ни password, и не будет оператора переменной по умолчанию, будет возвращена ошибка, что this variable doesn't exist

фактически здесь, если вы уберете Assining to default statment by None, ничего не изменится, он будет работать так же, потому что если пользователь не пошлет username или password, try будет работать так же. Так что это фактически равносильно:

def authenticate(self,request,username,password):

(но с заявлениями по умолчанию это считается более безопасным)

эта строка:

def get_user(self,user_id):

- это удобный метод для получения определенного объекта User, вы будете часто встречаться с этим методом. Он просто пытается найти объект User в базе данных, если он находит User, то будет return this user object, если он не находит объект User, то будет return None

Но в данной части кода get_user метод не используется

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