Django Регистрация/Приложение для входа (10 Часть серии)
Эй, ребята, как ты? В сегодняшней части мы собираемся создать систему входа в систему с помощью запомнить меня вариант печенья
Здесь опять же, нам не нужно изобретать колесо, спасибо за построенный в системе аутентификации Django. Мы можем построить нашу систему аутентификации, простирающиеся от этого и настроить ее для удовлетворения наших потребностей.
Django дает эту поддержку аутентификации в своем модуле django.contrib.auth
Чья конфигурация уже включена в settings.py Когда мы создали наш проект в самом начале. Это построенное в приложении AUTH дает нам Войти, а вывеска просмотров Вместе с другими представлениями управления паролем, которые мы перейдем в более поздние части серии.
- Большой. Теперь давайте посмотрим, как мы можем поставить все это вместе.
Давайте начнем с формы входа. Django имеет встроенный АутентификацияForm
который является базовым классом для аутентификации пользователей на основе имени пользователя и пароля.
Мы создадим наш логин от продления от него, чтобы добавить вспомнить меня, а также загрузка полей имени пользователя и пароля, используя виджеты Как мы видели на предыдущих постах.
A Запомнить ME Опция, приятно иметь функцию, поскольку пользователи не хотят заполнять учетные данные каждый раз, когда они посещают сайт.
forms.py
# Add this to previous list of imports from django.contrib.auth.forms import UserCreationForm, AuthenticationForm class LoginForm(AuthenticationForm): username = forms.CharField(max_length=100, required=True, widget=forms.TextInput(attrs={'placeholder': 'Username', 'class': 'form-control', })) password = forms.CharField(max_length=50, required=True, widget=forms.PasswordInput(attrs={'placeholder': 'Password', 'class': 'form-control', 'data-toggle': 'password', 'id': 'password', 'name': 'password', })) remember_me = forms.BooleanField(required=False) class Meta: model = User fields = ['username', 'password', 'remember_me']
- Мы видели, как формы создаются в последней части, когда мы создали форму регистрации, чтобы мы не будем здесь подробнее.
Далее давайте настроим представление для использования формы входа в систему, которую мы создали. У Django также есть встроенный Loginview. . Мы можем переопределить некоторые атрибуты класса и методы для удовлетворения наших потребностей.
views.py
from django.contrib.auth.views import LoginView from .forms import RegisterForm, LoginForm # Class based view that extends from the built in login view to add a remember me functionality class CustomLoginView(LoginView): form_class = LoginForm def form_valid(self, form): remember_me = form.cleaned_data.get('remember_me') if not remember_me: # set session expiry to 0 seconds. So it will automatically close the session after the browser is closed. self.request.session.set_expiry(0) # Set session as modified to force data updates/cookie to be saved. self.request.session.modified = True # else browser session will be as long as the session cookie time "SESSION_COOKIE_AGE" defined in settings.py return super(CustomLoginView, self).form_valid(form)
Первое, что мы сделали, установлено
form_class
атрибут нашим пользовательскимВход в систему
Так как мы больше не используем по умолчаниюАутентификацияForm
ОтказДалее мы переполнем
form_valid
Способ, который называется, когда действующие данные формы были опубликованы. Внутри этого метода мы проверили, проверяется, проверяется, проверяется ли Thurn_me_me (многие «чеки» там, у меня есть твистер язык:)).Если он не проверяется, сеанс истекает автоматически, когда браузер закрыт. Но для пользователей, которые проверяют в коробке вспоминания_ме, сеанс будет длиться до тех пор, пока мы определяем его в settings.py Отказ
Так что давайте пойдем вперед и настроим
Session_cookie_age
до 30 дней (или до тех пор, пока вы хотите, чтобы это долго) в настройках.
settings.py
SESSION_COOKIE_AGE = 60 * 60 * 24 * 30
- Большой. Теперь внутри нашего главного проекта Urls.py. Давайте сопоставьте желаемый путь входа в соответствие с соответствующими CustomLogInView Отказ
- Пока мы на этом, давайте также создадим маршрут выхода из системы, который будет обрабатываться встроенным
Logoutview.
.
user_management/urls.py
# Add the following to the list of previous imports from django.contrib.auth import views as auth_views from users.views import CustomLoginView from users.forms import LoginForm urlpatterns = [ # Add this path path('login/', CustomLoginView.as_view(redirect_authenticated_user=True, template_name='users/login.html', authentication_form=LoginForm), name='login'), path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'), ]
Redirect_authenticate_user = Правда
означает, что пользователи, которые пытаются получить доступ к странице входа в систему после того, как они аутентифицированы, будут перенаправлены обратно.Шаблоны не являются частью ресурсов, которые AUTH APP дает нам, поэтому нам нужно предоставить шаблон как для просмотра входа в систему, так и для выхода. По умолчанию Django ищет эти шаблон в Регистрация каталог. Но мы можем переопределить это поведение по умолчанию и сообщить Django искать шаблоны входа в систему и вывеска внутри Пользователи/шаблоны/пользователи/ каталог. Мы можем сделать это, проходя в
template_name
как аргумент дляAS_VIEW
функция.аутентификация_form = loginform
– Поскольку мы используем нашу расширенную форму входа в систему.
После успешного входа в систему по умолчанию Django перенаправляет пользователь на страницу профиля. Мы также можем изменить это в нашем settings.py Файл, так что давайте откроем это.
settings.py
LOGIN_REDIRECT_URL = '/' LOGIN_URL = 'login'
Login_redirect_url
Рассказывает Django перенаправить пользователя на домашнюю страницу после успешного входа в систему.-
Login_url
Является ли URL или названный URL-шаблон, где запросы перенаправлены для входа в систему, когда мы пытаемся ограничить доступ к определенным страницам. По умолчанию используется/учетные записи/логин/’. Но так как мы поставили наш логин на/авторизоваться
,Login_url
Рассказывает Django, где он может найти этот маршрут.
Это для части – I системы входа/выхода из системы. В следующей части мы создадим шаблоны и изменим некоторые вещи. Будьте на связи!
Спасибо за ваше время, вы можете найти готовое приложение в Github Отказ
Не стесняйтесь спрашивать, и любые предложения приветствуются. Увидимся!
Django Регистрация/Приложение для входа (10 Часть серии)
Оригинал: “https://dev.to/earthcomfy/django-login-logout-system-part-i-pdl”