Django 5 для начинающих

Прогресс по курсу:  9/1004

7.1 Введение в пользовательскую систему Django
2 из 3 шагов пройдено
0 из 3 баллов  получено

Поля и методы 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 символов, не обязательное значение.
email Адрес электронной почты, не обязательное значение.
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.

Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

" usernameИмя пользователя, не более 30 символов, может содержать буквенно-цифровые и _@+.- символы.

 first_nameИмя, не более 30 символов, не обязательное значение.

 last_nameФамилия, не более 30 символов, не обязательное значение. "

 

Добрый день. Откуда вы взяли 30 символов? Вот что на сайте Django:

usernameRequired. 150 characters or fewer. Usernames may contain alphanumeric, _@+. and - characters.

first_nameOptional (blank=True). 150 characters or fewer.

last_nameOptional (blank=True). 150 characters or fewer.

@Aleksandr_Gurov, Поправили, не ту версию Django смотрели когда писали эту лекцию.

@Илья_Перминов,  хорошо.

Ещё, is_anonymous и is_authenticated, насколько я понимаю, это атрибуты, а не методы

@Aleksandr_Gurov,  а здесь "Связь «многие-ко-многим» с django.contrib.auth{вот здесь}.Permission" потерялось ".models"

@Aleksandr_Gurov, Спасибо! Все исправил.

@Илья_Перминов, не хочу показаться занудой, но у атрибутов не помешает убрать скобки, а сами атрибуты убрать из таблицы с методами :-)

@Aleksandr_Gurov, Не, все хорошо)) Это моя спешка и не внимательность)

@Илья_Перминов, спасибо за оперативность.

@Aleksandr_Gurov, Дополню скриншотом с описанием полей таблицы auth_user