profile 앱 생성
python manage.py startapp profile
settings.py에 새로 만든 앱 추가
profile의 model field를 정의한다.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
#유저가 탈되하면 이도 사라짐 -->cascade
image = models.ImageField(upload_to='profile/', null=True)
#media root 밑에 profile이라는 경로가 생겨서 이에 저장됨
nickname = models.CharField(max_length=20, unique=True, null=True)
#unique 유일한 닉네임을 설정
message = models.CharField(max_length=100, null=True)
-user 필드
OneToOneField는 유저와 이에 대응하는 프로필을 일대일로 설정하기 위해 사용하는 것이다.
cascade는 유저가 탈퇴하면 같이 프로필 상에서도 삭제되도록 하는 코드이다
related_name은 역참조에 사용된다. 예를 들어 request.user.profile.nickname을 작성하면 profile이 related_name이므로
이 닉네임 필드를 쉽게 가져올 수 있다. 환경 변수랑 비슷한 역할??인가..
form
앞에서 이미 UserCreationForm을 사용한 적이 있다. 이를 상속받아 회원가입 폼을 만들었다.
from django import forms
from profileapp.models import Profile
class ProfileCreationForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['image', 'nickname', 'message']
이런 식으로 form을 작성 이를 이용하는 것은 다음 챕터에서 알아보자
admin (0) | 2022.03.21 |
---|---|
prfileapp 구현 시작 (0) | 2021.09.23 |
Decorater를 이용한 코드 간소화 (0) | 2021.09.22 |
Authentication 인증 시스템 구축 (0) | 2021.09.22 |
DeleteView기반 회원탈퇴 구현 (0) | 2021.08.17 |
댓글 영역