Django

[Django] Template 사용하기

주댕이 2024. 1. 26. 15:47

# HTML

## HTML을 저장할 디렉터리 생성하기

  • HTML은 프로젝트의 templates 디렉터리에 저장한다.
  • templates 디렉터리는 프로젝트 최상단 경로에서 생성한다.

 

 

## 메인 페이지와 버거 목록의 HTML 구현하기

  • templates 디렉터리를 생성했으면, 해당 디렉터리에 main.html과 burger_list.html 두 개의 HTML 파일을 만들고 각각의 파일에 다음과 같이 내용을 입력한다.
  • 먼저, 메인 페이지는 "안녕하세요, pyburger입니다"라는 문자열이 크게 나타나도록 <h1> 태그를 사용한다.
## templates/main.html

<!doctype html>
<html lang="ko">
<body>
    <h1>안녕하세요, pyburger입니다</h1>
</body>
</html>

 

  • 버거 목록에서는 "pyburger의 햄버거 목록입니다"라는 문자열이 나타나도록 한다.
## templates/burger_list.html

<!doctype html>
<html lang="ko">
<body>
    <h1>pyburger의 햄버거 목록입니다</h1>
</body>
</html>

 

 

# Django에 Template 설정하기

## templates 디렉터리를 Django가 인식할 수 있도록 설정하기

### BASE_DIR의 아래애 TEMPLATES_DIR 변수를 생성하기

## config/settings.py

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
>>TEMPLAES_DIR = BASE_DIR / "templates"<<  # 새 경로 할당
  • BASE_DIR은 프로젝트 최상위 경로인 디렉터리를 가리킨다.
  • TEMPLATES_DIR의 경로인 BASE_DIR/"templates"는 생성한 templates 디렉터리의 경로를 나타낸다.

### 생성한 변수를 TEMPLATES 항목의 "DIRS" 리스트에 추가하기

## config/settings.py

...
TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [>>TEMPLAES_DIR<<],  # Template을 찾을 경로 추가
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]
...
  • TEMPLATES 아래의 "DIRS" 리스트에 있는 경로는 Django가 Template을 찾는 디렉터리들이다.

 

## main과 burger_list View 함수에서 Template 사용하기

  • HttpResponse는 지정한 문자열을 브라우저에 돌려줄 때 사용하지만, HTML 파일을 돌려주지는 못한다.
  • HTML 파일을 브라우저에 돌려주기 위해서는 django.shortcuts.render 함수를 사용한다.
## config/views.py

>>from django.shortcuts import render<<  # render 함수를 import

def main(request):
    >>return rendr(request, "main.html")<<  # HttpResponse 대신 render 함수 사용

def burger_list(request):
    >>return render(request, "burger_list.html")<<  # HttpResponse 대신 render 함수 사용
  • render 함수의 첫 번째 인수(argument)로는 View 함수에 자동으로 전달되는 request 객체를 지정해야 하며, 두 번째 인수에는 Template의 경로를 지정한다.
  • Template의 경로는 settings.py에 지정한 TEMPLATES 설정의 DIRS에 추가한 디렉터리 경로(templates 디렉터리)를 기준으로 작성한다.
  • http://127.0.0.1:8000/burgers/

 

728x90

'Django' 카테고리의 다른 글

[Django] 데이터베이스 마이그레이션  (0) 2024.01.26
[Django] Model 구성하기  (0) 2024.01.26
[Django] View 사용하기  (0) 2024.01.25
[Django] Django 설치와 프로젝트 생성  (0) 2024.01.25