카테고리 없음

django 회원가입

rlarudals 2024. 8. 27. 21:28

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 을 맞게 설정하면 된다