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): ...
Неавторизован:
Авторизован — ваша страница:
ylqRWxkIEVAjeyLJKvurA
XTOvjvpHqpDbkMSwnSAiTpvRpV
Hey there! Would you mind if I share your blog with
my myspace group? There’s a lot of folks that I think
would really appreciate your content. Please let me know.
Cheers
I must thank you for the efforts you’ve put in writing this
site. I am hoping to check out the same high-grade content from you in the future as well.
In truth, your creative writing abilities has inspired me to get my
very own site now 😉
Thanks for thr great article!
Greetings, I do believe your web site could be having internet
browser compatibility problems. When I take a look
at your site in Safari, it looks fine but when opening in IE, it has some
overlapping issues. I just wanted to give you a quick heads up!
Besides that, great website!
Great write-up, I am normal visitor of one’s web site, maintain up the excellent operate, and It’s going to be a regular visitor for a lengthy time.
afzal bolen
Thank you so much!
I like it when people cone together and share opinions.
Great website, continue the good work!