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

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

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

Введение в систему пользователей Django

Пользовательская система Django основана на пакете django.contrib.auth, встроенном в фреймворк Django. В этом разделе вы узнаете об основных концепциях, предлагаемых этим пакетом, который является пользовательской системой по умолчанию, используемой различными приложениями Django, включая Django-admin.

 

Типы пользователей, подтипы, группы и разрешения

Существует два основных типа классов пользователей Django: User и AnonymousUser:

Если пользователь аутентифицирует себя (т.е. предоставляет действительное имя пользователя/пароль), Django распознает его как User.

С другой стороны, если пользователь просто просматривает приложение без какой-либо аутентификации, Django распознает его как AnonymousUser.

Любой пользователь может быть далее классифицирован на один из различных подтипов:

  • superuser: Самый мощный пользователь с правами на создание, чтение, обновление и удаление данных в админке Django, которые включают записи модели и других пользователей.

  • staff: Пользователь, помеченный как staff, может получить доступ к админ-панели. Но разрешения на создание, чтение, обновление и удаление данных в админке Django должны быть предоставлены пользователю явным образом.

  • active: Все пользователи помечаются как активные, если они находятся в хорошем состоянии. Пользователи, помеченные как неактивные, не могут аутентифицировать себя, что является обычным состоянием, если есть ожидающий шаг после регистрации (например, подтверждение электронной почты) или пользователь забанен, и вы не хотите удалять его данные.

Давайте откроем админ панель и посмотрим нашего superuser, которого мы создали еще в разделе 5.3.1 данного курса:

Мы видим что у него установлены права Staff и Superuser.

Django также предлагает концепцию класса Group для предоставления набора пользователей одного и того же набора прав без необходимости назначать их индивидуально.

Например, вы можете предоставить права группе, а затем назначить пользователей в эту группу, чтобы упростить управление правами. Таким образом, вы можете одним шагом отозвать или добавить разрешения для набора пользователей, а также быстро предоставить новым пользователям те же разрешения:

Кроме того, вы можете назначить права Django на пользователя или группу, чтобы они могли выполнять CRUD(Create-Update-Delete) записи в моделях Django, процесс, который осуществляется через записи модели Permission.

Также вы можете назначить более грубые разрешения Django на методы url/view или содержимое шаблона, чтобы предоставить доступ пользователю, группе или даже получателю разрешения.

Теперь, когда вы знаете основные концепции, лежащие в основе системы пользователей Django, давайте более подробно рассмотрим наиболее распространенные операции, связанные с пользователями Django.

Создание администратора

Первый пользователь, которого вы создали, — это суперпользователь. Вы уже настроили администратора Django в разделе 5.3.1, у вас уже есть суперпользователь проекта.

Рассмотрим еще варианты создания суперпользователя:

>>> python manage.py createsuperuser
Username (leave blank to use 'admin'): 
Email address: admin@google.com
Password: 
Password (again): 
Superuser created successfully.


>>> python manage.py createsuperuser --username=bigboss 
                      --email=bigboss@google.com
Password: 
Password (again): 
Superuser created successfully.


>>> python manage.py shell
>>> from django.contrib.auth.models import User
>>> user = User.objects.create_superuser(username='angelinvestor',
                                 email='angelinvestor@coffeehouse.com',
                                 password='seedfunding')

Как видно из кода выше, вы можете создать суперпользователя с помощью createsuperuser команды в manage.py утилите, где вам будет нужно ввести имя пользователя, адрес электронной почты и пароль.

И вы также можете создать суперпользователя с той же createsuperuser командой, используя встроенные аргументы --username и --email, и в этом случае вам будет предложено только ввести пароль.

Кроме того, также возможно создать суперпользователя через оболочку Django, используя User класс модели с create_superuser() методом.

Обратите внимание, что create_superuser() метод требует обязательных аргументов имени пользователя, электронной почты и пароля.

Когда вы создаете суперпользователя любым из этих способов, пользователь также автоматически назначается Staff и помечается как активный.

Создание обычного пользователя Django через оболочку

>>> python manage.py shell
>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user(username='maxim',
                                 email='maxim@google.com',
                                 password='maxim0712')
>>> user.is_staff
False
>>> user.is_active
True
>>> user.is_superuser
False

Как видно из кода выше, после получения доступа к оболочке Django вы импортируете класс User модели и вызываете create_user() метод с аргументами имени пользователя, электронной почты и пароля. Результат метода create_user() содержит только что созданного пользователя.

Чтобы подтвердить, что create_user() метод создает обычного пользователя, вы можете увидеть что вызов различных User атрибутов модели, подтверждающий, что пользователь не является ни штатным, ни суперпользователем, а просто помечен как активный:

Наконец, также можно создавать пользователей через администратора Django.

Как только вы войдете в административную панель Django, вы увидите экран, подобный показанному на рисунке, щелкните ссылку Users. Далее, нажмите кнопку Add в правом верхнем углу.

Кнопка Add открывает страницу, где вы можете ввести учетные данные для нового пользователя.


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