📢 공지사항
home

Profileapp 시작, 그리고 ModelForm

수강계획
2022/01/12
번호
30
복습여부
수강여부
수강일
2022/01/13
속성
닉네임, 이미지, 메세지를 묶은 프로필 앱 만들기
accountapp : profile = 1 : 1
delete view와 detail view는 구현하지 않음
1.
python manage.py startapp profileapp
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.
profile 앱 내에 urls.py 파일 생성하고 app name 명시
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.
Profile 앱 내부에 forms.py 파일 생성
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