닉네임, 이미지, 메세지를 묶은 프로필 앱 만들기
accountapp : profile = 1 : 1
delete view와 detail view는 구현하지 않음
1.
2.
settings.py에 profileapp 등록해주기
3.
jichuuu/urls.py에 profileapp 연결
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('accountapp.urls')),
path('profiles/', include('profileapp.urls')),
]
Python
복사
4.
5.
데이터를 담고자하는 모델 만들기
•
on_delete : 연결되어 있는 유저 객체가 없어질 떄 그와 연결되어있는 프로필 객체가 어떤 행동을 보일 것인지 담당
•
CASCADE : 없어질 때 프로필도 없어지게
•
related_name : 이거 뭐라는지 잘 모르겠음
•
upload_to : 이미지를 받아서 서버내부에 저장하는데 어디에 저장될지를 정해주는 경로(저번 강의에서 media root 설정했는데 media 밑에 profile이라는 경로가 추가돼서 거기에 들어감)
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
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_length=100, null=True)
Python
복사
profileapp/models.py
Account 앱 - UserCreationForm 장고에서 기본 제공해줌
Profile 앱 - 제공 안해줌
원래는 모델 설정해놓은 것처럼 form에서 비슷하게 갖다써야함
수십개는 너무 힘들어서 Model Form이라는게 존재함
기존 모델이 있으면 ModelForm을 상속받은 후, 어떤 모델을 사용할건지 어떤 필드를 입력할건지를 작성하면 그대로 form으로 변환됨
6.
from django.forms import ModelForm
from profileapp.models import Profile
class ProfileCreationForm(ModelForm):
class Meta:
model = Profile
fields = ['image', 'nickname', 'message']
Python
복사
profileapp/forms.py