models.py에 UserProfile 모델을 하나 생성합니다. 

 

저는 TestUserProfile을 하나 만들었고 user, gender, address를 가지고 있습니다.

user는 User모델과 1:1 매칭됩니다.

gender와 address는 그냥 charField입니다. 제대로 하기 위해서는 알맞은 타입을 가져야 하겠죠 ?

 

 

다음은 forms.py 에다가 SignupForm을 생성해줍니다. 

gender, address 에 해당하는 form 필드를 만들어 줍니다. widget을 설정할 수 있습니다. attrs에 class를 추가할 수 있고요.

signup 함수를 만들고 profile, user를 저장하는 코드를 작성해줍니다. 

 

python manage.py makemigrations 

python manage.py migrate 

 

를 통해서 TestUserProfile을 DB에 생성해주시고 테스트 합니다. 

 

settings.py에는 아래 설정을 추가합니다.

ACCOUNT_SIGNUP_FORM_CLASS = 'ytauth.forms.SignupForm'  #ytauth는 위 코드가 위치한 앱(app)으로 적당히 변경하셔야 합니다.

 

allauth를 사용하고 있기 때문에 signup 주소는 /accounts/signup 입니다. 접속해보면 아래와 같은 화면이 나옵니다. 원래는 gender, address input은 없는데 ACCOUNT_SIGNUP_FORM_CLASS 셋팅 때문에 ytauth.forms.SignupForm이 보여지고 있는 것이죠 !!

 

회원 가입을 하면 아래와 같이 가입되고 Profile도 저장됩니다.

admin.py을 적당히 가공해서 같은 화면에서 볼 수 있도록 할 수 있습니다. 

profile 정보를 가져오기 위해서는 user.profile.gender 이런식으로 사용하면 될 것 같습니다. 

 

 

+ Recent posts