Как сделать авторизацию в django?

Пользователь

от sherwood_littel , в категории: Python , 2 года назад

Как сделать авторизацию в django?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от hattie , год назад

@sherwood_littel 

В Django уже есть встроенный механизм аутентификации и авторизации, который можно легко настроить и использовать. Для этого вам нужно выполнить следующие шаги:

  1. Включить приложение auth в файле INSTALLED_APPS вашего проекта:
1
2
3
4
5
INSTALLED_APPS = [
    ...
    'django.contrib.auth',
    ...
]


  1. Прописать необходимые URL в файле urls.py:
1
2
3
4
5
6
7
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
]


  1. Создать формы аутентификации и регистрации в файле forms.py:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm

class SignUpForm(UserCreationForm):
    email = forms.EmailField(max_length=254, required=True, widget=forms.EmailInput())
    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2')

class LoginForm(AuthenticationForm):
    pass


  1. Создать представления для аутентификации и регистрации в файле views.py:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from django.shortcuts import render, redirect
from django.contrib.auth import login, logout
from .forms import SignUpForm, LoginForm

def signup_view(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            return redirect('home')
    else:
        form = SignUpForm


Пользователь

от magali , год назад

@sherwood_littel 

Авторизация в Django может быть реализована при помощи функциональности Django Authentication Framework. Этот фреймворк предоставляет всю необходимую функциональность для работы с аутентификацией и авторизацией в Django.


Для того чтобы использовать Django Authentication Framework, необходимо несколько шагов:

  1. Установите пакет Django Authentication Framework при помощи pip: pip install django-authentication-framework
  2. Добавьте 'django.contrib.auth' в список INSTALLED_APPS в файле настроек Django.
  3. Настройте URL-адреса, связанные с авторизацией, в файле urls.py. Это могут быть URL-адреса для входа, выхода, изменения пароля и т.д.: from django.urls import path from django.contrib.auth import views as auth_views urlpatterns = [ path('login/', auth_views.LoginView.as_view(), name='login'), path('logout/', auth_views.LogoutView.as_view(), name='logout'), path('password-change/', auth_views.PasswordChangeView.as_view(), name='password_change'), path('password-change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'), ]
  4. Создайте модель пользователя (или используйте стандартную модель django.contrib.auth.models.User) и определите соответствующий пользователя в качестве AUTH_USER_MODEL в файле настроек Django: AUTH_USER_MODEL = 'myapp.MyUser' Где myapp должен быть заменен на имя Вашего приложения, а MyUser – на имя модели пользователя.
  5. Создайте форму для входа: from django import forms from django.contrib.auth.forms import AuthenticationForm class LoginForm(AuthenticationForm): username = forms.CharField(widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Имя пользователя', 'autofocus': True })) password = forms.CharField( widget=forms.PasswordInput(attrs={ 'class': 'form-control', 'placeholder': 'Пароль' }) )
  6. Создайте представление для входа, используя форму из шага 5: from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login from .forms import LoginForm def login_view(request): if request.method == 'POST': form = LoginForm(request.POST) if form.is_valid(): username = form.cleaned_data.get('username') password = form.cleaned_data.get('password') user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('home') else: form.add_error(None, 'Пожалуйста, проверьте имя пользователя и пароль.') else: form = LoginForm() return render(request, 'login.html', {'form': form}) Где login.html – это имя страницы, которая будет отображаться для пользователей, чтобы войти в систему.


Вот и все, на основе этих шагов Вы сможете создать авторизацию в своем проекте на Django.