작정하고 Django (30) - Profileapp 시작 그리고 ModelForm

김의찬·2023년 5월 16일

작정하고 Django !

목록 보기
30/45

accountapp 에 이은 Profileapp 생성

accountapp 과 Profile 계정을 1대1로 매칭시켜줄 것이다.

Profile 에는 3가지가 들어간다.

  • 이미지
  • 닉네임
  • 메시지

Delete View 와 Detail View 를 사용하지 않을 예정

새로운 app 생성

python manage.py startapp profileapp
코드를 이용해서 새로운 앱을 시작해서 만들어준다.

profileapp 등록

euichan , settings.py 에서 profileapp을 등록한다. (사용하겠다 라고 명시)

url 라우팅

profile 파일 안에 urls라는 파이썬 파일을 생성하고 url을 저장한다.

model 생성

models.py 에서 모델을 생성한다.
1. 1대1 매칭 진행
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')

  • on_delete 라는 것은 연결되어 있는 user 객체가 없어질 때 그와 연결된 profile 객체가 어떤 행동을 보일것인지에 대한 정책 부분을 담당한다.

  • CASCADE 라는 것은 profile 까지도 없어지게 하는 것이다.
    -> user가 탈퇴하면 profile도 같이 사라짐.

  • related_name 은 따로 profile 객체를 찾지 않더라도 request 받은 user로 연결

  1. 모델 속성 추가
    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)
  • 1.image는 프로필 사진에 해당된다. upload_to 는 이미지를 받아서 서버 내부에 저장하는데, 그 장소 경로를 담당한다.

  • 2.nickname은 닉네임에 해당되고 20글자 미만으로 설정해준다.

  • 3.message는 100글자 미만으로 설정한다.

  • null=True 이것은 지정해도 되고 지정하지 않아도 된다는 의미이다.
    unique=True 는 오직 하나만 가능하다는 설정이다.

Form

AccountApp 에서 UserCreationForm 은 장고에서 기본적으로 제공하는 Form이기 때문에 새로운 폼을 만들지 않고 사용을 했었는데

profile 앱에서는 그렇지 않다. -> 만들어주어야 한다.

이런식으로 만들어주어야한다.

하지만 안에 내용이 너무 많아서 하나하나 쓰기 힘들기 때문에

Model Form 이라는 것이 존재한다.

  • 기존에 있었던 model을 Form으로 변환해주는 방식

ModelForm을 상속받은 후에 어떤 모델을 사용할것인지, 어떤 필드를 입력할 수 있게 만들것인지만 설정하면 된다.

profile
김의찬입니다

0개의 댓글