Поля и методы django.contrib.auth.models.User
Если мы в админ панели перейдем в раздел добавление пользователей, мы увидим несколько полей его данных, которые мы можем изменить.
Еще один вариант изменения профиля пользователя — прямое управление User записью его модели. Как показано в коде ниже, сначала вы делаете запрос для нужного пользователя, а затем изменяете атрибуты модели или выполняете один из User вспомогательных методов модели:
[venv] python manage.py shell
>>> from django.contrib.auth.models import User
>>> users = User.objects.get(id=1)
>>> users.username = 'admin'
>>> users.save()
> >> userbig = User.objects.get(username='bigboss')
>>> userbig.is_superuser
True
>>> userbig.superuser = False
>>> userbig.first_name = 'Big'
>>> userbig.last_name = 'Boss '
>>>
>>> myuser = User.objects.get(email='newbie@google.com')
>>> myuser.email ='boss@google.com'
>>> myuser.save()
>>> myuser.set_password( 'mynewpass')
>>> myuser.check_password('oldpass')
False
>>> myuser.check_password('mynewpass')
True
Как видно из кода выше, вы можете изменять те же User значения профиля, что и представленные в панели администратора Django.
Просто имейте в виду, что, поскольку вы делаете запрос, за любыми изменениями, внесенными в поля модели, должен следовать вызов метода save() для сохранения полей.
Давайте разберем полный список полей и методов, доступных в User модели:
Поля django.contrib.auth.models.User
| Поле | Описание |
|---|---|
| username | Имя пользователя, не более 150 символов, может содержать буквенно-цифровые и _@+.- символы. |
| first_name | Имя, не более 150 символов, не обязательное значение. |
| last_name | Фамилия, не более 150 символов, не обязательное значение. |
| Адрес электронной почты, не обязательное значение. | |
| password | Хэш и метаданные пароля. Обратите внимание, что Django не хранит необработанный пароль. |
| groups | Связь «многие-ко-многим» с django.contrib.auth.models.Group |
| user_permissions | Связь «многие-ко-многим» с django.contrib.auth.models.Permission |
| is_staff | Определяет, может ли пользователь получить доступ к сайту администратора.(булево значение) |
| is_active | Указывает, считается ли пользователь активным.(булево значение) |
| is_superuser | Указывает, есть ли у пользователя все разрешения без их явного назначения.(булево значение) |
| last_login | Дата и время последнего входа пользователя в систему, значение NULL, если пользователь никогда не входил в систему. |
| date_joined | Дата и время, обозначающие, когда была создана учетная запись. Устанавливается на текущую дату/время по умолчанию при создании учетной записи. |
Атрибуты django.contrib.auth.models.User
| Атрибут | Описание |
|---|---|
| is_anonymous | Для пользователя этот атрибут всегда возвращает False, он используется только как способ различать пользователя и анонимного пользователя. |
| is_authenticated | Для пользователя этот атрибут всегда возвращает True, он используется только для того, чтобы узнать, прошел ли пользователь AuthenticationMiddleware(представляющий текущего пользователя, вошедшего в систему). |
Методы django.contrib.auth.models.User
| Метод | Описание |
|---|---|
| get_username() | Возвращает имя пользователя для пользователя. Поскольку модель пользователя можно изменить на другую, этот метод является рекомендуемым подходом вместо прямой ссылки на атрибут имени пользователя. |
| get_full_name() | Возвращает поля first_name и last_name с пробелом между ними. |
| get_short_name() | Возвращает имя. |
| set_password (raw_password) | Устанавливает пароль пользователя в заданную необработанную строку, заботясь о хешировании пароля. Обратите внимание, что если для параметра raw_password установлено значение None, в качестве пароля устанавливается непригодный для использования пароль, как если бы использовался метод set_unusable_password(). |
| check_password (raw_password) | Возвращает True, если данная необработанная строка является правильным паролем для пользователя, обращая внимание на хеширование пароля для сравнения. |
| set_unusable_password() | Помечает пользователя как не имеющего пароля. Обратите внимание, что это не то же самое, что иметь пустую строку для пароля. check_password() для этого пользователя никогда не вернет True. Это полезно, если аутентификация выполняется по существующему внешнему источнику (например, каталогу LDAP). |
| has_usable_password() | Возвращает False, если для пользователя была вызвана функция set_unusable_password(). |
| get_group_permissions(obj = None) | Возвращает набор строк разрешений группы для пользователя. Если объект передан, возвращаются только групповые разрешения для конкретного объекта. |
| get_all_permissions(obj = None) | Возвращает набор строк разрешений группы и пользователя для пользователя. Если объект передан, возвращаются только групповые разрешения для конкретного объекта. |
| has_perm(perm, obj=None) | Возвращает True, если у пользователя есть указанное разрешение, где perm находится в формате <метка приложения>.<кодовое имя разрешения>. Обратите внимание, что если пользователь неактивен, этот метод всегда возвращает False. Если объект передан, проверка происходит на конкретный объект, а не модель. |
| has_perms(perm_list, obj = None) | Возвращает True, если у пользователя есть каждое из указанных разрешений, где каждое разрешение имеет формат <метка приложения>.<кодовое имя разрешения>. Обратите внимание, что если пользователь неактивен, этот метод всегда возвращает False. Если объект передан, проверка происходит на конкретном объекте, а не на модели. |
| has_module_perms(package_name) | Возвращает True, если у пользователя есть разрешения в данном пакете (т. е. метка приложения Django). Если пользователь неактивен, этот метод всегда возвращает False. |
| email_user(subject, message, from_email=None, **kwargs) | Отправляет электронное письмо пользователю. Если from_email имеет значение None, Django использует DEFAULT_FROM_EMAIL в settings.py. Также обратите внимание, что этот метод основан на методе Django send_mail(), которому он передает аргумент **kwargs. |