인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

퀀텀코더님의 프로필 이미지
퀀텀코더

작성한 질문수

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

DB 정보 접근 및 장고 템플릿 내 for loop

8:17초 질문드립니다.

작성

·

143

0

hello_world_list = HelloWorld.objects.all()

을 지우셨는데.. 

return HttpResponseRedirec(생략)  이므로 

지워도 영향은 안 받겟지만...hello_world.html 에 아직

{% if hello_world_list %}
{% for hello_world in hello_world_list %}
<h4>
{{ hello_world.text }}
</h4>
{% endfor %}
{% endif %}

이 있으므로 지우면 안되지 않나요...?

근데 지우고 실행해보니 또 잘 되더라구요. 근데 제가 생각으로는 Redirect돼서 hello_world.html이 실행되는데

hello_world_list가 없으면 html이 실행이 안되므로 

{{ hello_world.text }}도 실행이 안될텐데.. 왜 되는 걸까요...?

답변 1

0

Hyong Sok Park님의 프로필 이미지
Hyong Sok Park
지식공유자

안녕하세요.
질문 확인했습니다.

정상적으로 진행되는 이유는 HttpResponseRedirect 때문입니다.

해당 구문을 통해서 post 요청을 받았을때,
새로운 객체를 생성하는 과정을 진행후,
HTML 을 렌더링 하지 않고,
HttpResponseRedirect 를 통해 다시 GET 요청을 보내게 됩니다.

그럼 이제 앞서 작성한 요청이 POST 인지 아닌지 여부를 확인후,
GET 요청을 받았을때 실행되는 DB 확인 및 hello_world_list 라는 객체를 template 으로 넘겨주어
정상적으로 동작할 수 있는거죠.

POST 에서는 객체를 생성하기만 하고,
GET 요청을 다시 보내 렌더링하는 과정을 진행하는 것입니다.

답변이 도움되셨길 바래요!
감사합니다-

퀀텀코더님의 프로필 이미지
퀀텀코더

작성한 질문수

질문하기