# DetailView
Django - DetailView
Built-in class-based generic views - DetailView 단순히 템플릿을 렌더링 할게 아니라면(TemplateView), 좀 더 특정한 목적을 가진 제네릭 뷰들에 대해 알아보자. 먼저, 4월 3일 실습 과제였던 ModelForm을 사용해 Todo 웹페이지를 만드는 프로젝트에 재방문했다. 다행히 데이터가 남아있어서 다시 만드는 번거로움을 덜었다. todos/views.py 기존 detail 뷰함수를 CBV로 리팩터하기 위해 임포트문을 작성하고 공식 문서를 따라 작성한다. 템플릿을 찾을 수 없다는 에러가 발생했다. 조상 클래스를 거슬러 올라가다보니 다음과 같은 클래스를 발견했다: 얼른 template_name에 템플릿 이름을 할당했다. > templatename이 전달되지 않으면 todos/tododetail.html이 사용된다. /_.html로 만들어지는 것 같다. (Te

TIL#8
1) > 세 가지 뷰는 거의 동일한 기능을 가진다. 그런데 TemplateView에서는 templatename을 명시적으로 지정해준 반면에 DetailView에서는 모델명과 모델이 위치한 앱 그리고 이것이 DetailView인 점에서 'itemdetail'을 유추하는 기능이 내재돼있다. >> DetailView가 SingleObjectTemplateResponseMixin을 상속하는데 여기 gettemplatenames() 메소드가 정의돼있다. suffix가 _detail임을 확인할 수 있다. >>> 함수 기반 뷰의 해당 부분은 SingleObjectMixin에 내재돼있다. 2) > 로그인하지 않은 유저에게는 is_public의 아이템만 보이도록 코딩한 것인데, 조건을 타이트하게 걸어 줄수록 class 자체를 정의하고 넘어가는 편이 나아 보인다. 3) > 템플릿 내에서 사용할 이름은 context라는 사전의 형태로 전달되는데 getcontextdata라는 메소

[Django] 장고 Views를 활용한 HTTP 요청 처리#4_장고 기본 CBV API
1) > 여태까지 html 파일을 instagram 앱의 templates/instagram에 저장해왔다. template loader는 app directory loader, file system template loader로 구분할 수 있다. 특정 앱에 속하지 않은 html 파일은 프로젝트 settings.py의 DIRS에 저장하는 편이 좋다. 2) > 해당 코딩은 모든 사용자에 대해 is_public=True 조건의 포스팅을 보여주지만, 로그인하지 않은 사용자에게만 해당 조건을 걸어주고 싶은 경우 DetailView를 직접 상속받는 class를 만들어야한다. >> 이때도 queryset을 직접 정의해야 하는데 super()는 부모의 get_queryset()을 가져다 쓰겠음을 의미한다. 4) >

[Django] 장고 Views를 활용한 HTTP 요청 처리#3_클래스 기반 뷰 시작하기
1) > "GET 요청이 왔는데 >> /instagram/3 주소에 대해서 처리했고 >>> HTTP 프로토콜은 HTTP/1.1와 같으며 >>> 서버에서는 500이라는 상태 응답을 주었으며 >>>> 응답의 크기는 109 바이트이다." 2) > class method를 먼저 확인해보면 첫 번째 인자로 class 자기 자신이 넘어오며 그다음 두 번째 인자인 model이 넘어온다. 그렇게 생성된 instance인 self를 이용해서 class의 함수인 dispatch를 활용한다. >> dispatch 자체도 getobject와 gettemplate.name을 통해서 정의되어 있다. >>> 해석만 이렇게 했지, script 언어의 특성상 위에서 부터 내려온다는 것을 염두에 두자.

[django]DetailView CBV
서두 👩🏫 CBV냐 FBV냐? 논쟁이 많은데. 편한거 사용하면 되겠쥬? 개인적으로 생각하기에는 함수로 차근차근 다져놓고 이후 매번 중복되는 코드를 리팩토링하기위해서 클래스로 넘어가는게 매우 바람직하다라고 생각되네요. 아쨋든 Django Official Document는 물론이거니와 다른 참고 할 만한 웹사이트가 있으니 확인해 보세요. https://ccbv.co.uk/ 의 DetailView를 볼게요. 해당 속성 메소드들에 대한 간략한 리스트업이 된 모습! 본론👨🚀 우선 클래스로 짯을

[django] DetailView로 profile페이지 구성
목적 DetailView를 이용한 활용과 그 쓰임에 대해 대략적으로 짚어보도록 할게요. View from django.contrib.auth.models import User에서 가져온 User를 model 값으로 지정하고 contextobjectname = 'target_user'도 지정해 주는데요. 만약 default값으로 생략해 버리면 user라는 context 값이 template에 전달되는데요. 그럼 내가 다른 사람의 페이지로 가서 구경하고 싶어도 내 정보만 보여주는 문제가 발생해요. 이는 'user'라는 컨텍스트 이름의 모호함 때문이지 않나? 싶어요 그래서 AccountDetailView안에 contextobjectname = 'target_user'이라고 좀더 명확하게 표현하고 있어요. template_name은 profile 페이지가 어디에 있는지 해당 경로를 값으로 넘겨주면되요. accountapp/u