인프런 커뮤니티 질문&답변

wodnr0710님의 프로필 이미지

작성한 질문수

Do It! 장고+부트스트랩: 파이썬 웹개발의 정석

UpdateView - 포스트 수정 페이지 만들기

UpdateView - 포스트 수정 페이지 만들기 에서 질문이 있습니다.

해결된 질문

작성

·

289

·

수정됨

0

26:27초 쯤에 tests.py의 test_update_post() 함수에서 카테고리의 pk를 적어줘야하는지 이해가 잘 되지 않습니다.

앞서 setUp() 함수에서 post_001과 post_002를 생성할 때는 category를 입력할 때 pk는 사용하지 않고 진행했습니다.

하지만 왜 포스트 수정을 핱때는 category를 입력할 때 pk를 사용해야 하는지 잘 모르겠습니다.

 

답변 1

0

SungYong Lee님의 프로필 이미지
SungYong Lee
지식공유자

안녕하세요. 예리한 질문입니다!

setUp에서 create로 생성할 때와 self.client.post로 생성할 때는 그 의미가 다릅니다.

우선 setUp에서 모델명.objects.create를 사용할 때는 장고 파이썬을 이용해 생성하는 방법입니다. create함수가 그렇게 사용할 수 있도록 정의되어 있기 때문에 pk가 아니라 실제 파이썬 인스턴스를 넣어주게 되어 있습니다.

그러나 self.client.post에서 self.client는 는 from django.test import Client로 정의된 요소입니다. 가상의 브라우저라고 생각하시면 됩니다. 브라우저에서 서버와 통신하는 방식은 get방식과 post 방식이 있고, 그 중 post 방식으로 정보를 브라우저에서 전달하는 상황입니다. 이때 self.client (브라우저라고 생각하면 됨)에서 갖고 있을 수 있는 정보는 해당 카테고리의 pk 밖에 없으므로 그걸 전달할 수밖에 없습니다.

혹시 설명이 너무 어렵다면 알려주세요!