자유게시판

여러분의 의견을 자유롭게 알려주세요.

409쪽 질문 CBV방식 관련

1 year, 10 months ago

daniel_choi daniel_choi

음.. 이건 좀 장황한 질문이 될 수 있겠는데요

보통 CBV 방식을 사용하지 않는 FBV 방식일때는 views에서 return render(요청, 보낼html,무엇을보낼건지 요소)

이렇게 구현이 되었던 것으로 기억을 합니다.

하지만 409페이지에서는 CBV 방식으로써

post_form.html의 table태그 사이에 {{ form }}

이라고 되는 form에

결과론적으로는 blog/views.py의 fields 속성들이 보내지는 것 같습니다.

여기서 질문이 있습니다.


FBV 방식에서는 무슨요소를 보낼지, 어디 html으로 보낼지, render로 지정을 해줍니다.

하지만 CBV에서는 "무슨요소를 보낼지"에 대해서는 정황상 fields의 속성들을 보내주는 것 같은데요.

"어디 html로 보낼지"는 어떻게 알수있으며, 어떻게 지정이 가능할까요?

blog/urls에 보더라도

path('create_post/', views.PostCreate.as_view())

라고 되어있을때

create_post라는 주소값으로

views의 PostCreate클래스를 사용해서 보내준다.

라는 정도로는 이해를 했는데.

마찬가지로 views.PostCreate의 fields자료를 어떤 html로 보낸다.에 대해서는 여전히 모르겠어서 질문드립니다!


sungyong
sungyong   1 year, 10 months ago

최근에 제가 바빠서 답이 늦었습니다. Q&A 게시판 위주로 보다보니, 자유게시판에 있는 질문 확인이 지연됐네요. 

질문은

1. CBV를 쓸 때, 템플릿 html이 자동으로 설정되는데, 어떤 기준으로 설정되는지, 그리고 개발자가 직접 지정할 수 있는지로 요약해볼 수 있을 것 같습니다. 

2. Form을 사용하는 경우 필드값들이 전달되는가? 


1. CBV 템플릿 관련

이와 관련된 내용은 189페이지에 설명이 되어 있습니다. 예를 들어 ListView를 사용하는 경우, model = Post로 지정하면, 템플릿은 소문자 모델명(post) + _list, 즉 post_list.html을 사용하도록 자동으로 설정됩니다. 그래서 만약 blog_list.html 파일이 없다면 그림 8-20처럼 해당 html 파일이 없다고 에러 메시지를 보여줍니다. 

기본으로 설정되는 html 파일이 아니라 개발자가 원하는 파일을 지정하고 싶다면 template_name으로 지정해주면 됩니다. 


2. Form을 사용하는 경우

일단은 html 문법에서 form이 어떤 역할을 하는지 파악이 필요합니다. 책에서는 "사용자가 입력한 값을 서버로 보내기 위한 용도"라고 설명했습니다. 

더 자세한 내용은 아래 링크 문서를 참고해보세요. 

https://www.nextree.co.kr/p8428/

방문자의 입력 내용을 Post 방식으로 서버에 전달하기 위해 form을 씁니다. 장고에서 CreateView를 사용하면, 장고가 form을 만들어줍니다. 우리는 그 form을 template 파일(html)에서 사용할 수 있는 것이고요. 따라서 말씀 하신대로 "fields 자료를 htm로 보낸다"는 표현이 맞지만, 더 정확히는 "form에 fields로 선택한 항목들을 담아서 html로 보낸다"가 맞을 것 같습니다. 

그리고 "어떤 html로 보낼지"는 앞의 내용과 일맥상통합니다. CBV를 사용할 때, CreateView, UpdateView 등은 방문자의 입력을 form 형태로 받는 역할을 해야 합니다. 따라서 소문자 모델명 + _form.html의 파일(즉, post_form.html)을 템플릿 파일이라고 인식합니다. 


이해에 도움이 되었으면 좋겠네요. 

Updated: Jan. 15, 2023, 2:09 p.m.

Leave a Comment:
목록보기
Search
  • 자유게시판
  • Q&A