본문 바로가기
Python/Django

Django의 템플릿 문법(html)

by K-밍키 2022. 5. 30.

Templates 폴더 안에 html 파일을 생성하고 Django의 템플릿 문법을 알아보자.


1. 템플릿 만들기(html)

템플릿 폴더 내 파일구조

 1-1. templates/base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    
    <title>{% block title %}{% endblock %} | spartaSNS</title>
    
    <!-- Bootstrap CSS -->
    # 생략
    </style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <div class="container">
        # 생략 - 상단 nav바 내용
    </div>
</nav>
{% block content %}

{% endblock %}

</body>
</html>

 1-2. templates/user/signup.html

{% extends 'base.html' %}

{% block title %}
    회원가입
{% endblock %}
{% block content %}
    <div class="container">
        <div class="wrap">
            <h2 class="title-center"> 회원가입 </h2>
            <form class="form-area">
                <div class="form-group mt-2 mb-2">
                    <label for="username">이름</label>
                    <input type="text" class="form-control" id="username" name="username">
                </div>
                # 생략
            </form>
        </div>
    </div>
{% endblock %}

 

2. 템플릿 문법 : html에서 Python 언어를 사용할 수 있게 하여 작업을 수월하게 도와주는 언어

 2-1. 상속

  • 상속하는 부모 html 에서 {% block title %} {% endblock %} 를 사용하여 자식의 title을 가져옴
  • 상속받는 자식 html 에서 {% extends 'base.html' %} 를 사용하여 부모html을 가져옴

 2-2. 변수 : views에서 templates으로 객체를 전달

  • 사용 형식 : {{ Variables.Variables}}
  • 변수 속성 접근은 닷표현식으로 사용

 2-3. 필터 : 변수의 값을 특정 형식으로 변환

  • 사용 형식 : 파이프( | ) 를 사용
  • {{ Variables | lower }} ==변수값을 소문자로 변경
  • {{ Variables | length }} == 변수값의 길이 반환
  • {{ Variables | default:"nothing" }} == 변수값이 없는 경우 nothing을 출력

 2-4. 태그 : python 언어를 사용하여 기능 구현

  • 사용 형식 : {% tag %}
  • {% for Var in Vars %} {% endfor %} == 반복문 구현
  • {% if Var %} {% elif %} {% else %} {% endif %} == 조건문 구현
  • {% csrf_token %} == form 태그 첫줄에 사용되며 토큰값의 유효성을 검증
  • {% with Var = vars.var %} {% endwith %} == 특정 값을 변수에 저장가능
  • 2-1 상속문 참조
참조문서 :
https://docs.djangoproject.com/ko/3.1/topics/templates/

템플릿 언어를 잘 활용하여 파일 분리 및 템플릿 작성을 편리하게 해보자.