inflearn logo
강의

Course

Instructor

Introduction to Python Django: Starting with Django's Design Philosophy

Practice - Naver Application Password Verification and SMTP Account Setting

CreateView에 html 코드가 어떻게 적용되는 걸까요?

372

nembizzang2031

1 asked

0

안녕하세요, 수강생 김영빈입니다!

강의 4-3. django-bootstrap5 적용 및 post_new 뷰 구현과 관련하여 질문이 있습니다.

bootstrap을 활용하여 포스팅을 위한 form을 구성하는 와중에 app.views.py에서 클래스 기반 뷰인 post_new를 활용해 form을 사용자에게 전달하고, 사용자가 입력한 내용을 DB에도 저장시킵니다.

이때 view의 함수 기반 뷰인 index나 post_detail과는 다르게 return값에 html 템플릿 인수를 적용하지 않습니다. 그런데 어떻게 연결이 되어 사용자에게 html 코드를 보여줄 수 있는 것일까요?

제가 유추해보았을 때는 form_class의 인자로 넣은 PostForm을 활용해 app.forms.py의 PostForm 클래스를 참조하여, form object를 생성하고, 이 form object를 post_form의 form인자로 받아서 html 코드를 출력하는 것으로 생각했습니다만 확실하지가 않아서 문의드립니다.

CreateView가 매커니즘에 대한 이해가 크지 않아서 혼란이 발생하는 것 같습니다. 어떻게 이해하면 될지, 또한 CreateView의 소스코드는 어디서 볼 수 있는지 또한 함께 질문 드립니다!form.pngpost_form.pngviews.png

 

python django html createview

Answer 1

0

pyhub

안녕하세요.

CreateView 클래스 기반 뷰를 활용한 post_new 뷰 생성 코드는 아래와 같구요.

image

말씀하신 대로 CreateView에서는 form_class에 지정한 폼 클래스의 인스턴스를 만들어서, form 이름으로 템플릿을 렌더링합니다.

CreateView 코드는 아래 링크에서 확인하실 수 있구요.
https://github.com/django/django/blob/4.2/django/views/generic/edit.py#L187

template context data로 "form" 이름으로 폼 인스턴스를 지정하는 코드는 아래 링크에서 확인하실 수 있습니다.
https://github.com/django/django/blob/4.2/django/views/generic/edit.py#L74

장고 기본의 클래스 기반 뷰는 상속 관계가 복잡해서 코드를 읽기 힘드실 수 있습니다.

django-rest-framework를 만든 encode에서 django-vanilla-views 라이브러리를 내놓은 바 있습니다.
https://github.com/encode/django-vanilla-views/blob/master/vanilla/model_views.py#L276

CBV를 좀 더 단순하게 구성하면서, 기본 CBV와의 호환성도 지키고 있는 라이브러리입니다. 이 코드를 보시면 CBV 동작을 이해하시는 데에 도움이 되시지 않을까 싶습니다.

확인해보시고 댓글 남겨주세요.

화이팅입니다. :-)

1

nembizzang2031

보내주신 링크들이 이해가 쉽지는 않았으나 천천히 뜯어보면서 이해할 수 있었습니다!

이렇게 빨리 답변을 주시다니 감동이네요ㅠㅠㅠ

강사님이 계속 강의 업데이트도 해주시고, 질문에 답변도 빨라서 고민 끝에 이 강의를 골랐는데 정말 잘 골랐다는 생각이 듭니다!

오늘로써 입문편을 모두 수강했습니다! 이미 구매한 장고 완벽 가이드도 설레는 마음으로 시작해보겠습니다. 답변 감사합니다!!

pycharm 리딤코드

0

64

2

pycharm 프로 에디션

0

163

2

메일 전송하는 부분은 어떨때 쓰는건가요?

0

88

1

'venv' 같은 이름의 가상환경 만들지마세요

0

264

1

get_object_or_404로 바꾼 후 계속 오류가 나옵니다

0

121

2

[Django 5 버전 - 해결 방법] Method Not Allowed (GET)

0

289

1

개발환경 구축 관련하여 질문드립니다.

1

224

1

PyCharm Professional

0

258

1

accounts/url 질의

0

235

2

render 관련

0

230

1

추가질문 환경세팅)

0

345

3

장고프로젝트 생성시

0

255

2

도커 설치관련

0

234

1

환경세팅 질문드려요

0

234

1

smtp 발송에서

0

277

2

주소가 app/app/1로 나와요

0

200

1

주소가 app/app/1로 나옵니다

0

250

2

#장고 철학5 모델 설계 질문 드립니다.

0

208

1

URL 매핑 관련해서 질문드립니다.

0

272

1

Http Method 관련 질문입니다.

0

166

1

벌레모양 디버그랑 런이란 무슨 차이가 있나요?

0

496

1

파이참 프로 에디션

0

209

1

sql

0

350

1

Git

0

249

1