[django] Django 템플릿과 렌더링하는 방법! + Render 함수 설명
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