자유게시판
여러분의 의견을 자유롭게 알려주세요.
이 페이지는 의견 교환을 위해 따로 만든 페이지입니다. 책에서 이 페이지를 만드는 법을 직접적으로 다루지는 않습니다.
하지만, 책을 끝까지 읽고 나면 이 페이지도 만드실 수 있을거에요.
하지만, 책을 끝까지 읽고 나면 이 페이지도 만드실 수 있을거에요.
409쪽 질문 CBV방식 관련
1 year, 10 months ago
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 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: