참고문헌

Using the Django authentication system | Django documentation | Django

django.contrib.auth | Django documentation | Django

인증이란?

인증(Authentication)이란 쉽게 말해 유저의 로그인을 의미합니다. 로그인을 시도하는 유저가 우리 사이트에 가입한 유저가 맞는지 아이디와 비밀번호를 통해 확인하는 과정입니다.

Django는 인증을 통해 특정 페이지에 대한 권한을 부여할 수 있습니다.

User 모델

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/'