Profile App
•
Account객체와 Profile객체를 1:1 매칭을 한다
•
닉네임, 이미지, 메시지 세개를 제공한다
•
DeleteView와 DetailView를 구현하지 않고, 계정이 삭제되면 프로필도 같이 삭제되게 만든다
1.
터미널에서 앱을 만들어준다
python manage.py startapp profileapp
2.
pragmatic/settings.py에 INSTALLED_APP에 profileapp을 등록해준다
3.
pragmatic/urls.py에 profileapp의 url을 라우팅해준다
path('profileapp/', include('profileapp.urls'))
4.
profileapp 내부에 urls.py를 만들어주고,다음과 같이 입력해준다
app_name = 'profileapp'
urlpatterns = [
]
Python
복사
5.
models.py에 새로운 모델을 만들어준다
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE related_name='profile')#이 프로파일과 유저 개체를 연결해줌
Python
복사
on_delete : 연결되어있는 개체가 사라졌을때, 어떤 행동을 할 지 결정한다
CASCADE : 연결되어 있는 개체가 삭제되면, 프로필도 삭제한다
request.user.profile
내부에 모델을 계속 작성해준다.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
image = models.ImageField(upload_to='profile/', null=True)
nickname = models.CharField(max_length=20, unique=True, null=True)
message = models.CharField(max_legnth=100, null=True)
Python
복사
Model Form?
: 기존 모델을 그대로 폼으로 변환해주는 기능
모델 폼을 상속받은 후에, 어떤 모델을 사용할건지, 어떤 필드를 입력하게 할 것인지만 설정하면 그대로 모델이 폼으로 변환됨.
from django.forms import ModelForm
from profileapp.models import Profile
class ProfileCreationForm(ModelForm):
class Meta:
model = Profile
fields = ['image', 'nickname', 'message']
Python
복사