Django включает полную систему аутентификации: User модель, login/logout, разрешения.
User модель
from django.contrib.auth.models import User
# Создание
user = User.objects.create_user(
username='alice',
email='alice@example.com',
password='secret123'
)
# Получение
user = User.objects.get(username='alice')
print(user.username, user.email, user.is_staff, user.is_superuser)
Подключение URL аутентификации
# mysite/urls.py
from django.contrib.auth import views as auth_views
urlpatterns = [
path('accounts/', include('django.contrib.auth.urls')),
# Даёт:
# /accounts/login/ → auth_views.LoginView
# /accounts/logout/ → auth_views.LogoutView
# /accounts/password_change/ и др.
]
Страница входа
Нужен шаблон registration/login.html:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Войти</button>
</form>
В settings.py:
LOGIN_REDIRECT_URL = '/' # куда после входа
LOGOUT_REDIRECT_URL = '/accounts/login/'
LOGIN_URL = '/accounts/login/' # куда редиректить если не авторизован
Регистрация
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render, redirect
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'registration/register.html', {'form': form})
login / logout в коде
from django.contrib.auth import login, logout, authenticate
# Авторизация
user = authenticate(request, username='alice', password='secret123')
if user:
login(request, user)
# Выход
logout(request)
Проверка в шаблоне
{% if user.is_authenticated %}
<p>Привет, {{ user.username }}!</p>
<a href="{% url 'logout' %}">Выйти</a>
{% else %}
<a href="{% url 'login' %}">Войти</a>
{% endif %}
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!