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

고대훈님의 프로필 이미지

작성한 질문수

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

DetailView를 이용한 개인 페이지 구현

24강 html 파일 안에서 변수 사용 질문 (context 관련)

21.08.09 17:12 작성

·

289

0

제가 여태까지 강의를 들으면서 이해하기로는

html 파일 안에서 특정 변수를 쓸 때 views.py에서 context 구문 안에 변수를 넣어 보내는 걸로 이해했습니다.

예를 들어, hello_world view에선

context ={ 'hello_world_list' : hello_world_list }

이런 식으로 'hello_world_list'라는 이름의 변수에 hello_world_list를 할당(?)해서 html 안에서

{% if hello_world_list %} 이런 식으로 쓸 수 있는 걸로 이해했습니다.

만약 제 생각이 맞다면,  DetailView에서는 따로 user 라는 이름에 할당한 변수가 없는데 어떻게 바로 user라는 변수를 가져와서 쓸 수 있는건가요?

class 기반의 view는 function 기반의 view와는 달리 작동하는 건가요?

답변 1

0

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

2021. 08. 13. 15:21

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

말씀하신대로, Template 단에서 어떤 객체를 사용하기 위해선
View 단에서 해당 객체를 넘겨주어야 사용이 가능합니다.

하지만, View 에서 넘겨주는 값 말고도 사용이 가능한 객체가 있는데,
그 중에 하나가 user 객체입니다.

User 는 웹 서비스에 있어서 특수한 자원입니다.
어떤 웹서비스든 대부분 계정을 중심으로 인증이 진행되기 때문에,
django 프레임워크 또한 템플릿 단에서 User 객체에 편리하게 접근할 수 있도록 
Template context 안에 user 객체를 미리 넣어둡니다.

자세한 내용은 장고 공식문서를 참고하시길 바랍니다.

https://docs.djangoproject.com/en/3.2/ref/templates/api/#built-in-template-context-processors

https://docs.djangoproject.com/en/3.2/topics/auth/default/#authentication-data-in-templates

 
결과적으로,
function based view 와의 동작 구조 차이가 있는것이 아니라,
기본적으로 django template 안에서 사용가능한 user 라는 객체가 존재한다고 생각하시면 되겠습니다.

답변이 도움 되셨길 바랍니다!

좋은하루 보내시구요-
감사합니다!

고대훈님의 프로필 이미지
고대훈
질문자

2021. 08. 14. 22:15

친절한 답변 정말 감사합니다!