django 회원가입 기능을 만들때에는 Form 을 이용해서 만드는 것이 편하다.
class CustomUserCreationForm(UserCreationForm): # 회원가입 class
class Meta: # __init__ 개념이 조금은 비슷하다.
model = get_user_model()
fields = UserCreationForm.Meta.fields + ()
CustomUserCreationForm 클래스는 Django의 UserCreationForm을 상속받아 사용자의 회원가입을 처리하기 위한 폼을 정의
model = get_user_model(): 현재 프로젝트에서 사용되는 사용자 모델을 지정합니다. 이 설정은 커스터마이즈된 사용자 모델을 사용할 때 유용
fields = UserCreationForm.Meta.fields + (): 기본 UserCreationForm에서 제공하는 필드들에 추가적인 필드를 더하거나 수정
@require_http_methods(['GET', 'POST'])
def sign_up(request):
if request.method == 'POST':
form = CustomUserCreationForm(request.POST)
if form.is_valid():
user = form.save()
auth_login(request, user)
return redirect("accounts:homepage")
else:
form = CustomUserCreationForm()
# 양식을 html에 보낸다.
context = {
"form": form
}
return render(request, "accounts/sign_up.html", context)
데코레이트를 이용해 GET 과 POST 말고 받지 않게 설정
만약 POST 로 데이터가 들어올 경우 if form.is_valid()에서 유효성 검사를 진행한 후에 form이 user에 저장.
그리고 로그인이 바로 되게 auth_login 이라는 함수를 붙이고 rediect로 이동
POST가 아닐경우는 회원가입 정보 입력란은 제공
이후 urls.py 와 html 을 맞게 설정하면 된다