Рубрики
Без рубрики

Django Login / Logout System Part-I

Эй, ребята, как ты? В сегодняшней части мы собираемся создать систему входа в систему с помощью … Теги с Python, Django, WebDev, CodeNewie.

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”