웹 개발

[django] Django 템플릿과 렌더링하는 방법! + Render 함수 설명

행니짱 2022. 9. 13. 13:36
Template 
= 장고에서 HTML과 같이 화면 구성을 담당하는 것 
Rendering을 통해, HttpResponse 객체로 변환된다. 

 

 

1. Template 디렉토리 만들어주기 

현재 foods앱을 작업하고 있으므로, 

foods앱 안에 templates라는 디렉토리를 만들어준다. 

templates안에 앱 이름을 그대로 사용한 foods라는 디렉토리를 만들어준다. 

foods 디렉토리 안에 HTML 파일을 만들어주면 된다. 

 

즉, foods 앱 디렉토리 > templates 디렉토리 > foods 디렉토리 > index.html 파일 = index templates

 

2. index.html에 우리가 원하는 html 코드를 자유롭게 적어주기 

3. Template Render하기 = Template을 유저에게 보여주는 과정!

views.py에 render 함수값을 리턴해준다. 

render의 첫번째 파라미터는 request, 두번재 파라미터는 우리의 템플릿의 경로인 'foods/index.html'

(foods 디렉토리 안에 있는 index.html 파일) 

render(request, 우리가 원하는 템플릿의 경로) => HttpResponse 객체

render(request, 'foods/index.html')를 통해서 하나의 HttpResponse 객체가 만들어진다. 

 

4. 서버 켜서 확인해해보기 

python manage.py runserver로 주소를 받아와서 확인해보면, 

이렇게 잘 렌더링 되는걸 볼 수 있다 ! !

<render() 함수>

render(request, template_name, context=None, content_type= None, status = None, using= None)

= 인자로 주어진 템플릿을 사전형(dict)인자인 context와 결합하여 렌더링 거치기 -> HttpResponse 객체로 반환

= 템플릿 + context 데이터 -> HttpResponse 객체로 돌려주는 함수 

 

 

[필수 인자] 

  • :request = 데이터를 요청한 요청 객체 넘겨주는 역할, 요청에 대한 정보에 접근해서 user, session등의 기능을 구현하기 위해서 필요하다. 
  • template name = 렌더링에 사용할 대상 템플릿을 명시해주는 역할 

[선택 인자]

  • context = 템플렛에 추가할 값들이 들어있는 사전형 인자, 기본형은 None
  • status = 상태코드 값이며, 기본 값은 200(성공)이다.
  • uusing = 템플릿을 렌더하는 템플릿 엔진을 지정할 수 있는 인자, 원하는 경우 다른 템플릿 엔진을 사용하여 템플릿을 렌더링할 수 있다. 

 

[Render의 두 가지 의미]

 

1. Django Template Language 사용 -> 일반적인 HTML코드로 바꿔주는 과정 = render 

2. HTML파일을 브라우저가 읽기 -> 우리가 보는 웹페이지로 바꿔주는 과정 = render