jc.jang

18강 SignupForm에 Meta.model 적용하기 본문

Django/Django - 인증편

18강 SignupForm에 Meta.model 적용하기

jangstory 2019. 9. 9. 20:23

주제

  • SignupForm에 Meta.model 적용하기

노트

  • settings.py에 AUTH_USER_MODEL = 'accounts.User'를 설정했다.
  • 회원가입을 시도해보면 에러가 발생한다.
  • accounts/forms.py
from django.contrib.auth.forms import UserCreationForm


class SignupForm(UserCreationForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['username'].validators = [validate_email]
        self.fields['username'].help_text = '이메일 형식을 입력하세요.'
        self.fields['username'].label = 'Email'

    def save(self, commit=True):
        user = super().save(commit=False)
        user.email = user.username
        if commit:
            user.save()
        return user
  • 회원가입할 때 사용한 form이다.
  • UserCreationForm을 상속 받아 사용하는데, 기본 사용자 모델을 변경했기 때문에 UserCreationForm을 재정의해야한다.

 

  • 수정 - accounts/forms.py
from django.contrib.auth.forms import UserCreationForm
from .models import User


class SignupForm(UserCreationForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['username'].validators = [validate_email]
        self.fields['username'].help_text = '이메일 형식을 입력하세요.'
        self.fields['username'].label = 'Email'

    def save(self, commit=True):
        user = super().save(commit=False)
        user.email = user.username
        if commit:
            user.save()
        return user

    class Meta(UserCreationForm.Meta):
        model = User
  • Meta 클래스에서 accounts의 User 모델을 사용한다고 명시했다.

요약

  • 기본 사용자 모델 변경에 따라 UserCreationForm을 재정의하여 사용할 수 있다.

날짜

  • 오후 8시, 20190909

 

Comments