render( )
render( request, template_name, context=None, content_type=None, status=None, using=None )
render 함수는
인자로 주어진 템플릿을 사전형(dict) 인자인 context와 결합해서 렌더링을 거친 다음 HttpResponse 객체로 반환하는 함수.
쉽게 말하면 인자로 넘겨주는 템플릿과 context 데이터를 합쳐서 HttpResponse 객체로 돌려주는 함수.
필수 인자
이 중에서 필수인자는 request와 template_name 이다.
- request에는 데이터를 요청한 요청 객체를 넘겨준다. 앞에서 함수형 view의 인자로 들어온 request를 render에 그대로 사용했다
...
def view(request):
return render(request, ...)
...
이 request를 넘겨주는 이유는 요청에 대한 정보에 접근해서 user, session 등 여러 가지 기능을 구현하기 위해서이다.
- template_name은 렌더링에 사용할 대상 템플릿을 명시한다.
선택 인자
다음으로 선택 인자를 보면
- context 는 템플릿에 추가할 값들이 들어 있는 사전형 인자로 기본값은 아무것도 없는 None이다.
- content_type 은 결과로 만들어 내는 문서의 유형을 말하며 기본값은 'text/html' 즉 HTML 웹 페이지이다.
- status 는 상태 코드(Status Code) 값이며 기본값은 200(성공)입니다. 상태 코드는 클라이언트의 요청이 성공적으로 처리되었는지에 대한 정보를 주는 코드이다.
- using 은 템플릿을 렌더하는 템플릿 엔진을 지정할 수 있는 인자입니다. 원하는 경우 다른 템플릿 엔진을 사용하여 템플릿을 렌더링할 수 있다.
자세한 내용은 아래링크 확인 - https://docs.djangoproject.com/ko/4.1/topics/http/shortcuts/#django.shortcuts.render
두 개의 render
사실 우리가 알고 있는 과정 중 'render'라고 불리는 과정은 두 가지가 있다.
우리가 Django Template Language를 써서 작성한 코드를 읽어서 일반적인 HTML 코드로 바꿔주는 과정도 rendering이라고 하고, 이 HTML 파일을 브라우저가 읽어서 우리가 실제로 보는 이쁜 웹 페이지로 바꿔주는 과정도 rendering이라고 한다.
그러니까 서버에서 Django 코드를 render 해서 HTML 파일로 만들고 그 다음 웹 브라우저에서 HTML 파일을 render 해서 우리가 보는 웹페이지로 바꿔주는것이다.
Django 강의에서 말하는 render는 대부분 Template Language를 사용한 Django 코드를 HTML로 바꿔주는 과정을 일컫기는 하지만 이 두 가지 과정 모두 render라는 것을 기억하자.
'Python > Django' 카테고리의 다른 글
[Django] 상태 코드(Status Code) (0) | 2023.01.30 |
---|---|
[Django] Template Language (0) | 2023.01.29 |
[Django] URL Routing (0) | 2023.01.29 |
[Django] runserver (0) | 2023.01.29 |
[Django] 장고의 철학 Reusable App (8) | 2023.01.28 |
댓글