[Django] Template inheritance

한결·2023년 3월 26일
0

WEB

목록 보기
12/63

템플릿 상속

  • 코드의 재사용성에 초점을 맞춤
  • django에서 쓰는 모든 html파일에 구조를 잡아줘야되면 어질어질함
  • 만약 모든 템플릿에 부트스트랩을 적용하여먼 모든 템플릿에 부트스트랩 CDN을 작성해야함
    -> 템플릿 상속으로 해결하자

템플릿 상속에 관련된 태그

{% extends '' %}

  • 하위템플릿이 부모 템플릿을 확장
  • 반드시 템플릿 최상단에 작성되어야 함 == 2개 이상 사용불가

{% block content %}{% endblock content %}

  • 재지정 할 수 있는 부분
{% extends 'base.html' %}

{% block content %}

{% endblock content %}

예시

  1. 최상단에 templates 폴더 생성해서 상속할 html 파일 생성 및 작성

  2. settings.py에서 base.html을 읽어올수 있도록 경로 지정

# pjt/settings.py

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent # 현재 BASE_DIR이 최상단을 가리키고 있음 

TEMPLATES = [
    {
        # 생략
        'DIRS': [BASE_DIR / 'templates',], # base.html을 읽어들일 수 있도록 경로 지정
        # 생략
            ],
        },
    },
]
  1. extends 태그로 base.html 을 상속 받아서
    block안에 원하는대로 재지정

    결과

Django는 Template을 어떻게 처리하는 걸까?

  • pjt/settings.py에 위처럼 적혀 있음

  • 55번째 줄 : BASE_DIR안에 templates 폴더안에서 찾아라

    • BASE_DIR = Path(__file__).resolve().parent.parent == 현재 파일(settings.py)의 부모의 부모 == 프로젝트의 최상단
  • 59번째 줄 : App의 DIR안에 templates라는 폴더가 있으니까 거기서 찾아라

0개의 댓글