Django авторизация

Блог Полезное

Django авторизация

Django авторизация

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


  • Регистрация

  • Авторизация

  • Выход

  • Сброса пароля

В этой статья я расскажу о login и logout.

Начало работы с Login System Django

Прежде чем начать, убедитесь, что у вас подключен модуль "django.contrib.auth" в INSTALL_APPS.

Конфигурация URL маршрутов

Добавьте в свой файл urls.py импорт функции аутентификации из коробки django. 

 


from django.conf.urls import url
from django.contrib import admin
from django.contrib.auth import views as auth_views

urlpatterns = [
url(r'^login/$', auth_views.login, name='login'),
url(r'^logout/$', auth_views.logout, name='logout'),
url(r'^admin/', admin.site.urls),
]

Импортируем views из from django.contrib.auth и настраиваем пути для функций. 

Настройка шаблона

По умолчанию django.contrib.auth.views.login будет искать шаблон в registration/login.html и если его там не будет, то он воспользуется своим шаблоном. Поэтому я рекомендую создать в проекте папку templates/registration/login.html и уже с этим шаблоном работать в дальнейшем. В шаблоне напишем простой вывод формы:


{% extends 'base.html' %}

{% block title %}Вход{% endblock %}

{% block content %}
<h2>Войдите</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Войти</button>
</form>
{% endblock %}

Этого достаточно для авторизации пользователя на вашем сайте.

Авторизация django

Чтобы сделать редирект пользователя на нужную вам страницу после авторизации пропишите в settings.py такую строчку LOGIN_REDIRECT_URL = 'путь' . Можно так же использовать url name вместо пути.

Функция выхода

 По умолчанию django будет искать шаблон в уже знакомой нам папке registration/logout.html.

Я обычно использую такую комбинацию для перенаправления пользователя после выхода 


url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'),

Вот так просто использовать систему аутентификации в django. Конечно ее можно заточить под свои нужнды, добавить полей изменить метод и т.д. Об этом позже будет написано