Итоги работы

⏱ 15 мин · 🧩 заданий: 5

Что сделали в модуле

Тема Главное
Система пользователей User, хэши паролей, группы и права, request.user
Вход и выход django.contrib.auth.urls, шаблоны registration/, выход только POST
Защита страниц @login_required, LoginRequiredMixin, permission_required
Регистрация UserCreationForm + login()
Вход по email свой бэкенд в AUTHENTICATION_BACKENDS
Сообщения и сессии messages, request.session, modified = True
Профили OneToOneField, ImageField + Pillow, MEDIA_*, request.FILES
Своя модель пользователя AbstractUser, AUTH_USER_MODEL с первого дня
OAuth 2.0 social-auth-app-django, ключи из окружения, пайплайн
Дизайн Bootstrap 5: сетка, navbar, карточки, формы, сообщения

Схема модуля account

account/
├── authentication.py   EmailAuthBackend
├── forms.py            UserRegistrationForm, UserEditForm, ProfileEditForm
├── models.py           Profile (или User(AbstractUser))
├── pipeline.py         create_profile для social-auth
├── views.py            dashboard, register, edit
├── urls.py             include("django.contrib.auth.urls") + свои маршруты
└── templates/
    ├── account/        dashboard.html, register.html, edit.html
    └── registration/   login.html, logged_out.html, password_*.html

Чек-лист

  • Объясню разницу между аутентификацией и авторизацией.
  • Знаю, почему нельзя User.objects.create(password=...).
  • Понимаю, как сессия связывает браузер с пользователем.
  • Умею загружать файлы через форму.
  • Понимаю, что сайт получает при входе через OAuth и чего не получает.

Что дальше

Наш блог умеет отдавать HTML людям. Но мобильному приложению или фронтенду на React нужен не HTML, а данные в JSON. В следующем модуле построим для блога REST API на Django REST Framework.

Практика решено 0 из 5

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Один вариант ответа

Пользователь забыл пароль. Какой набор встроенных view решает задачу?

Задание 2 Несколько вариантов

Что из этого — хорошие практики работы с пользователями?

Задание 3 Расставить по порядку

Расставьте по порядку, что происходит при входе пользователя по логину и паролю.

  1. Браузер получает cookie sessionid и редирект на LOGIN_REDIRECT_URL
  2. authenticate() перебирает AUTHENTICATION_BACKENDS и проверяет пароль по хэшу
  3. Пользователь отправляет форму входа (POST с csrf_token)
  4. login() записывает id пользователя в сессию
  5. На следующих запросах middleware восстанавливает request.user из сессии
Задание 4 Написать код

Контрольное задание: view-класс DashboardView на основе TemplateView с шаблоном account/dashboard.html, доступный только вошедшим пользователям (миксин).

Задание 5 Практика (выполнить у себя)

Убедитесь, что в вашем блоге работают регистрация, вход по логину и по email, выход, сброс пароля (письмо в консоли), редактирование профиля с аватаром и вход через GitHub. Нажмите, когда проверите.

Войдите, чтобы отмечать пройденные уроки.