장고 내장 로그인 views에 로그인 유지 체크박스 추가하기
3-05 로그인과 로그아웃에서 django.contrib.auth에 있는 장고 내장 로그인views를 사용하여 손쉽게 로그인 기능을 구현할 수 있습니다.
하지만 내장 로그인views에는 로그인 유지 기능이 없고, 이는 settings.py에서만 설정이 가능합니다.
SESSION_EXPIRE_AT_BROWSER_CLOSE
사용자의 선택에 따라 로그인 유지 기능이 유동적으로 작동하길 원했지만,
내장 로그인views를 계속 사용하고 싶어서 구글링하다가 방법을 찾아서 공유해 봅니다.
SESSION_EXPIRE_AT_BROWSER_CLOSE = False 기준
-
장고 내장 로그인 form에 체크박스 필드를 추가하여 덮어쓰기
-common/forms.py-from django.contrib.auth import forms as auth_forms class LoginForm(auth_forms.AuthenticationForm): remember_me = forms.BooleanField(required=False)
-
장고 내장 로그인 view에 기능 덮어쓰기
-common/views.py-from .forms import LoginForm from django.contrib.auth import views as auth_views class UpdatedLoginView(auth_views.LoginView): form_class = LoginForm def form_valid(self, form): remember_me = form.cleaned_data['remember_me'] if not remember_me: self.request.session.set_expiry(0) self.request.session.modified = True return super().form_valid(form)
-
로그인 urls.py 변경
-common/urls.py-
-점프 투 장고 기준 url-path('login/', auth_views.LoginView.as_view(template_name='common/login.html'), name='login'),
-변경된 url-
from . import views as common_views path('login/', common_views.UpdatedLoginView.as_view(template_name='common/login.html'), name='login'),
-
login.html에 remember me 체크박스 추가
- 끝
덕분에 장고 내장 views를 커스텀하는 방법을 알게 됐습니다.
시수 님 649
M 2022년 4월 15일 11:40 오전