Django 로그인/로그아웃 시스템 첫 번째 섹션
12058 단어 codenewbiepythondjangowebdev
여기서 우리는 바퀴를 재발명할 필요가 없다.django가 내장한 신분 검증 시스템에 감사한다.우리는 신분 검증 시스템을 확장하고 맞춤형으로 제작함으로써 우리의 신분 검증 시스템을 구축하여 우리의 수요를 만족시킬 수 있다.
Django는 해당 모듈
django.contrib.auth
에서 이러한 인증 지원을 제공하며 설정에 포함되어 있습니다.우리가 프로젝트를 처음 만들었을 때이 내장된auth 프로그램은 로그인과 로그아웃 보기, 그리고 다른 암호 관리 보기를 제공합니다. 이 시리즈의 뒷부분에서 이 보기들을 소개할 것입니다.# 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']
의견.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)
AuthenticationForm
속성을 사용자 정의form_class
로 설정하는 것이다. 기본값LoginForm
을 사용하지 않기 때문이다.AuthenticationForm
방법을 다시 썼다. 이 방법은 유효한 폼 데이터를 발표할 때 호출된다.이 방법에서, 우리는 '나를 기억해라' 콤보 상자를 선택했는지 검사한다. (여기에는 '검사' 가 매우 많은데, 나는 빙빙 돌려서 하는 명령이 있다.)form_valid
을 30일(또는 얼마나 오래 지속하기를 원하는지)으로 계속 설정합니다.SESSION_COOKIE_AGE = 60 * 60 * 24 * 30
SESSION_COOKIE_AGE
로 처리됩니다.# 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'),
]
LogoutView
는 인증 후 로그인 페이지에 액세스하려는 사용자가 다시 돌아간다는 것을 의미합니다.redirect_authenticated_user=True
를 매개 변수로 template_name
함수에 전달함으로써 이 점을 실현할 수 있다.as_view
- 확장 로그인 폼을 사용하기 때문입니다.설정py
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = 'login'
authentication_form=LoginForm
django가 성공적으로 로그인한 후에 사용자를 홈 페이지로 다시 지정한다고 알려줍니다.LOGIN_REDIRECT_URL
는 URL 또는 명명된 URL 모드로, 특정 페이지에 대한 액세스를 제한하려고 하면 로그인을 위해 요청이 리디렉션됩니다.기본값은/accounts/login/입니다.단, 로그인 경로를 LOGIN_URL
로 설정했기 때문에 /login
django가 이 경로를 어디서 찾을 수 있는지 알려 줍니다.감사합니다github에서 완성된 프로그램을 찾을 수 있습니다.
마음대로 질문하세요. 어떤 건의도 환영합니다.안녕히 계세요!
Reference
이 문제에 관하여(Django 로그인/로그아웃 시스템 첫 번째 섹션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/earthcomfy/django-login-logout-system-part-i-pdl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)