Using the Django authentication system | Django documentation | Django
django.contrib.auth | Django documentation | Django
인증(Authentication)이란 쉽게 말해 유저의 로그인을 의미합니다. 로그인을 시도하는 유저가 우리 사이트에 가입한 유저가 맞는지 아이디와 비밀번호를 통해 확인하는 과정입니다.
Django는 인증을 통해 특정 페이지에 대한 권한을 부여할 수 있습니다.
django에는 미리 만들어진 User 모델이 있습니다. settings.py의 INSTALLED_APPS
리스트를 보시면 django.contrib.auth
라는 앱이 기본적으로 들어가 있을 것입니다.
INSTALLED_APPS = [
'main',
'a',
'b',
'c',
'd',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
django가 기본적으로 가지고 있는 인증을 담당하는 앱으로 여기에 User 모델이 작성되어 있습니다. 우리는 이것을 가지고 쉽게 유저 인증을 구현할 수 있습니다. 그러므로 따로 User 모델을 작성할 필요는 없습니다.
여기에는 id, username, first_name, last_name, email, date_joined(가입한 날짜), password, last_login(마지막으로 로그인한 날짜) 등이 정의되어 있습니다. 자세한 내용은 공식 문서를 참고해주세요.
Built-in class-based view 중 CreateView를 이용하여 쉽게 구현이 가능합니다.
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
from django.views.generic.edit import CreateView
class SignupView(CreateView):
template_name = 'signup.html'
form_class = UserCreationForm
model = get_user_model()
def get_success_url(self):
return '/dd/login/'
template_name
: 로그인 페이지로 사용할 html 템플릿form_class
: 폼으로 사용할 클래스. 여기서는 django의 auth앱에 미리 구현된 UserCreationForm
을 사용합니다.model
: 해당 CreationView로 생성할 모델