Django 20

‍박태우·2023년 5월 17일
0
post-custom-banner

#Profileapp 시작 그리고 Modelform

  • detailview의 문제점

(자신의 아이디가 떡하니 나와있음, 해킹에 취약해짐 => 닉네임을 만들것임)

=> 닉네임, 이미지, 메시지 3개를 묶은 profileapp을 새로 만들것이다.

(account와 profile은 1:1 매칭이 되어야한다.)

(구성 요소로는 위와 같이 이미지, 닉네임, 메세지 3가지가 들어간다.)

(Delete View는 accountapp 과 연결되어 있고, 연결된 account가 회원 탈퇴 시에만 사라지도록 할것이기 때문에 따로 구현 x

Detail View는 main에서 프로필을 꾸며주는 용도로 사용할 것이기 때문에 구지 프로필만 따로 볼 수 있는 Detail 페이지를 만들지는 않을 것이다.)

본격적으로 Profileapp 구현하기

1) 터미널에 python mange.py startapp profileapp을 입력하여 새로운 앱을 만들어 준다.

(새로운 profileapp 디렉토리가 생성된 모습)

2) setting.py 에 새로운 앱이름 등록

3) url.py에 경로 지정

4) profile하위에 urls.py 생성

(app_name은 'profileapp'으로 설정하였으며 아직은 view가 없으므로 urlpatterns는 비어있는 모습을 볼 수 있다.)

5) models.py 설정

(위에서 설명했던 3가지 요소를 models.py에 각각 구현한 모습, 각 설명은 주석 참고)

profileapp 에서의 form 생성

(accountapp에서 우리는 장고에서 기본 제공하는 form을 사용해서 구현 했었다.)

(반면 profileapp은 기본지원해주는 form이 존재하지 않는다.)



  • 기존 방식

(우리가 모델을 위와같이 설정해 놓았다고 하면)

(form에서 비슷한 필드들이 있는데, 위와 같이 form을 만들어서 가져다 쓸수는 있지만 ,

내용이 여러줄(수십줄)이면 다 타이핑하기가 힘들다.
=> Model From 이용 : 기존에 있었던 모델을 그대로 form으로 변환 시켜주는 기능

(기존 모델이 있으면, 일부의 커스터마이징만으로
위와 같이 ModelForm 을 상속받고 나서, 어떤 모델을 사용하고 어떤 필드를 입력 할 수 있게 할 것인지를 설정하면

그 model이 그대로 form으로 변환이 된다.)

실제로 구현해 보자

1) profileapp 하위 디렉토리에 forms.py 생성

2) form.py에 해당 객체에 대한 From을 설정해준 모습

(아까의 model에 user 라는 필드는 서버에서 다로 처리해 줄 것이기 때문에 여기서는 구현을 하지 않았다.)

profile
잘 부탁드립니다.
post-custom-banner

0개의 댓글