본문 바로가기
장고 프레임워크

장고 기본 인증)05 회원가입

by 문자메일 2020. 6. 21.

https://github.com/django/django/blob/master/django/contrib/auth/forms.py

UserCreationForm에서는 User 모델에서 "username" field를 하나만 가져온다.

그리고 password1, password2 2개 field에서 password를 2번 입력받고 

clean_password2() 메서드에서 2개의 password가 동일하면 OK, 다르면 ValidationError를 발생시켜 입력받은 2개의 password가 동일한지 검증을 한다.

 

save() 함수에서 암호 지정하고 저장

 

user객체에 password를 넣을 때는

user.password = "xxxxx" (X)

user.set_password("xxx")  (O)

 

왜냐하면 admin에서 아무 계정의 password 정보를 보면 아래처럼 하나의 문자열(String)로 저장되어 있다.

hash값을 비교하여 로그인처리 한다.

포맷 : 알고리즘$반복횟수$salt$hash

 

장고에서는 모든 인증의 기본은 Auth앱의 User이다. (구글 인증을 쓰더라도)

 

 

회원가입 View 소스 코드 (views.py)

 

from django.contrib.auth import get_user_model # User Model 가져오기 위함

from django.contrib.auth.forms import UserCreationForm # User 생성 Form 가져오기

from django.views.generic import CreateView

from django.conf import settings

 

User = get_user_model()

 

signup = CreateView.as_view(

    model = User,

    form_class = UserCreationForm,

    success_url = settings.LOGIN_URL,

    template_name='accounts/signup_form.html',

)

댓글