Перейти к содержимому
Questpro Club

Questpro Club

Клуб ищущих ответы на свои вопросы

Метка: authorization

Опубликовано 7 февраля, 20237 февраля, 2023

Django python быстрое добавление авторизации и формы для пользователей

1) Убеждаемся, что настройки проекта по-умолчанию содержат необходимые модули для авторизации и они подключены

файл settings.py: как в коде ниже auth и contenttypes в INSTALLED_APPS, SessionMiddleware и AuthenticationMiddleware в MIDDLEWARE

INSTALLED_APPS = [
    ...
    "django.contrib.auth",
    "django.contrib.contenttypes",
    ...
]

MIDDLEWARE = [
    ...
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    ...
]

2) В вашей базе данных присутствуют таблицы

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions

Они появляются при первоначальной миграции, при создании проекта
Если их нету, то после первого пункта, запустите первоначальную миграцию в консоли:

> manage.py migrate

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

Можно найти ее через поиск файлов по имени «login.html» в вашем проекте в папке дистрибутива django
У меня, примерный путь был
…/django/contrib/admin/templates/admin/login.html

Копируем файл полностью и вставляем уже в структуру ваших файлов проекта по пути:

/templates/registration/login.html

Это стандартный путь к такой форме. Если же вы решите разместить форму авторизации в другом месте, нужно указать путь к ней в конфигурацию
settings.LOGIN_URL

4) Добавляем в основной файл роутинга urls.py информацию по форме авторизации

from django.contrib.auth import views as auth_views
...
urlpatterns = [
    ...
    path('accounts/login/', auth_views.LoginView.as_view()),
]

5) В файле views.py для любого метода обработки запроса теперь может поставить декоратор, который будет требовать авторизацию
Если пользователь уже авторизован — пускать запрос на дальнейшую обработку, если не был — показывать форму авторизации и после авторизации, возвращаться в целевой метод обработки запроса

from django.contrib.auth.decorators import login_required
...

@login_required
def my_view(request):
    ...

Неавторизован:

Стандартная форма авторизации в django

Авторизован — ваша страница:

Ваша страница, доступная авторизованному пользователю

Свежие записи

  • Жесткий менеджмент — Дэн Кеннеди
  • Установка или обновление Jenkins — ошибка пермишенов при сборке — запуск сервиса Jenkins от юзера
  • Установка PHP 7.4 с компиляцией модуля v8js на ubuntu 22
  • Установка PHP 7.4 с компиляцией модуля v8js на ubuntu 20
  • Оптимизация долгого запроса к большой таблице с фильтром по датам и времени

Свежие комментарии

  • RescueFrench к записи Установка или обновление Jenkins — ошибка пермишенов при сборке — запуск сервиса Jenkins от юзера
  • boostaro к записи Система грейдов разработчиков — теоретический материал — книги
  • 16977 к записи Система грейдов разработчиков — теоретический материал — книги
  • 436283 к записи Система грейдов разработчиков — back-end программист
  • 128679 к записи Jenkins — git — собираем проект из приватного репозитория

Архивы

  • Август 2024
  • Июнь 2024
  • Май 2024
  • Март 2024
  • Декабрь 2023
  • Ноябрь 2023
  • Июнь 2023
  • Февраль 2023
  • Январь 2023
  • Декабрь 2022
  • Ноябрь 2022
  • Октябрь 2022
  • Июль 2022
  • Июнь 2022
  • Март 2022
  • Февраль 2022
  • Январь 2022
  • Декабрь 2021
  • Ноябрь 2021
  • Август 2021
  • Июль 2021
  • Апрель 2021
  • Март 2021
  • Февраль 2021
  • Январь 2021
  • Декабрь 2020
  • Октябрь 2020
  • Сентябрь 2020
  • Август 2020
  • Июль 2020
  • Июнь 2020
  • Май 2020
  • Апрель 2020

Рубрики

  • administration
  • article
  • books
  • Uncategorized

Мета

  • Регистрация
  • Войти
  • Лента записей
  • Лента комментариев
  • WordPress.org
Сайт работает на WordPress