본문 바로가기

Django

Django 기본 탬플릿(base.html) 생성, App 탬플릿 상속

728x90

base.html

  • 모든 html 탬플릿이 공통적으로 가지는 구조를 정의하여 다른 html 문서에서의 반복 최소화
  • 다른 html 문서들은 base.html을 상속 받아 사용하게 됨

 

생성

$ mkdir templates
$ code templates/base.html
  • templates 이름의 폴더를 생성 후 내부에 base.html 파일 생성

 

base.html 코드 작성

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    {% block content %}
    {% endblock contents %}
</body>
</html>

  • ! + Tab 자동완성 지원
  • 향후 base.html 상속받은 탬플릿에서 작성한 코드가 들어갈 block 정의 (이름 자유)
  • 블록 자동완성은 장고 html로 변경 시 사용 가능
  • 자바 스크립트를 위한 script 등의 블록 별도로 정의 가능 

 

settings.py 설정

# settings.py

TEMPLATES = [
	{
		'DIRS' : [BASE_DIR/'templates'],
	}
]

  • Django가 인식하는 BASE_DIR 내부에 templates 폴더 추가
  • 폴더 안에서 html을 찾을 수 있도록 설정

애플리케이션 탬플릿

  • 애플리케이션의 기능 구현 시 보여줄 html 페이지 작성 방법

 

templates 폴더 생성

$ mkdir templates
$ mkdir AppNames
$ code AppNames/temp.html
  • 애플리케이션 내부에 templates 이름의 폴더 생성 -> 반드시 settings.py에 등록한 이름으로 생성
  • templates 폴더 내부에 AppName 이름의 폴더 생성
  • AppName 폴더 내부에 원하는 이름의 html 파일 생성

 

애플리케이션 개별 html 코드

{% extends 'base.html' %}

{% block content %}
	<h1>내용 작성</h1>
{% endblock content %}

  • extends 태그로 base.html 상속
  • base.html 내부에 정의한 것과 동일한 이름의 block 생성
  • block 내부에 원하는 코드 작성
  • base.html 내부에서 정의한 블록이 여러개라면, 여러 block 활용 가능