[Django] Django Template

한결·2023년 3월 26일
0

WEB

목록 보기
11/63
post-thumbnail

Django Template

데이터 표현을 제어하는 도구이자 표현에 관련된 로직

  • Django Template을 이용한 HTML정적 부분관 동적 컨텐츠 삽입
    • 그동안은 html파일을 수정하지 않는 이상 같은 화면만 보였음
    • 특정 조건에서 동적으로 바꿔서 보여줄 수 있음

Django Template Language (DTL)

  • 파이썬 처럼 일부 프로그래밍 구조(조건문, 반복문 등)을 사용할 수 있지만 파이썬 코드로 실행되는 것이 아님
  • 프로그래밍적 로직이 아니라 프레젠테이션을 표현하기 위함임

DTML Syntax

  1. Variable
  2. Filters : 변수가 보여주는걸 조금 바꿔줌
  3. Tags : 조건문, 반복문 등의 기능
  4. Comments : 주석

Variable

# app/views.py

from django.shortcuts import render

# Create your views here.
def index(request):
    context = {
        'name' : 'Hangyeol',
        'age' : 21,
    }
    print('>>>')
    print(context)
    return render(request, 'articles/index.html',  {'context':context})
  • 변수를 딕셔너리 형태로 넘겨줄 수 있다
<!--app/templates/app/index.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>
    <h1>Hola! {{context.name}} </h1>
    <h2>나이는 : {{context.age}} </h2>
</body>
</html>

{{context.name}}

  • dot(.)을 이용해 변수 속성에 접근할 수 있음

Filters

  • 표시할 변수를 수정할 때 사용
  • 60개의 built-in template filters를 제공
  • 못외움 걍 필요할때마다 공식문서 or 검색
  • Ex.

<h2>나이는 : {{context.age | add:2}} </h2>

Tags

{% tag %}

  • 반복 또는 논리를 수행해서 제어 흐름을 만드는 등 변수보다 복잡한 일들을 수행
  • 일부 태그는 종료 태그 필요함
    • {% if %}{% end if %}
  • 약 24개의 built-in template tags를 제공
<!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>
  <h1>Hola! {{context.name}} </h1>
  {% if context.age == 21 %}
    <p>스물하나 부럽다</p> 
  {% endif %}  
  <h2>나이는 : {{context.age}} </h2>

</body>
</html>

  • if tag가 잘 작동되는 것을 확인할 수 있다

context.age == 27 이면 if tag에 의해 "스물하나 부럽다"가 안나올 것이다

Comments

{# #}

0개의 댓글