[파이썬][Django] Django 템플릿 언어 (DTL) 기초와 예제

Django 템플릿 언어(Django Template Language, DTL)는 Django 프레임워크에서 HTML 템플릿을 동적으로 렌더링하는 데 사용되는 언어입니다. DTL은 Python 코드와 비슷한 구문을 사용하며, 변수 삽입, 제어 구조 및 필터를 지원하여 템플릿에서 데이터를 효과적으로 처리할 수 있습니다. 아래에서 DTL의 기초와 간단한 예제를 설명하겠습니다.

변수 출력

DTL에서 변수를 출력하려면 `` 형식을 사용합니다. 이 변수는 템플릿 렌더링 시에 해당 변수의 값으로 대체됩니다.

예제:

<pre>
<code>

<!DOCTYPE html>
<html>
<head>
    <title>DTL Example</title>
</head>
<body>
    <h1>Hello, {{ name }}</h1>
</body>
</html>

</code>
</pre>

제어 구조



DTL은 조건문과 반복문과 같은 제어 구조를 지원합니다. 조건문은 `{% if 조건식 %} ... {% endif %}` 형식을 사용하고, 반복문은 `{% for 변수 in 리스트 %} ... {% endfor %}` 형식을 사용합니다.


예제:

```html
<pre>
<code>

<!DOCTYPE html>
<html>
<head>
    <title>DTL Control Structures</title>
</head>
<body>
    <h1>Colors</h1>
    <ul>
        {% for color in colors %}
            <li>{{ color }}</li>
        {% endfor %}
    </ul>
    
    {% if show_message %}
        <p>This message is shown because show_message is True.</p>
    {% else %}
        <p>This message is hidden because show_message is False.</p>
    {% endif %}
</body>
</html>

</code>
</pre>

필터

DTL에서는 출력된 변수에 필터를 적용하여 변환할 수 있습니다. 필터는 `` 형식으로 사용합니다.

예제:

<pre>
<code>

<!DOCTYPE html>
<html>
<head>
    <title>DTL Filters</title>
</head>
<body>
    <h1>Price: {{ price|currency }}</h1>
    <p>Today's date: {{ date|date:"Y-m-d" }}</p>
</body>
</html>

</code>
</pre>

주석

주석은 {# 주석 내용 #} 형식을 사용하여 템플릿 코드 내에서 설명을 추가할 수 있습니다. 주석은 템플릿 렌더링 시에 무시됩니다.

예제:

<pre>
<code>

<!DOCTYPE html>
<html>
<head>
    <title>DTL Comments</title>
</head>
<body>
    <h1>Hello, {{ name }}</h1>
    {# This is a comment #}
</body>
</html>

</code>
</pre>

예제 템플릿 렌더링

Python에서 DTL을 사용하여 템플릿 렌더링하려면 Django의 render 함수를 사용합니다. 아래는 예제 템플릿을 렌더링하는 방법입니다:

from django.shortcuts import render

def my_view(request):
    context = {
        'name': 'John Doe',
        'colors': ['Red', 'Green', 'Blue'],
        'price': 19.99,
        'date': datetime.now(),
        'show_message': True,
    }
    return render(request, 'my_template.html', context)

위의 코드에서 context 변수에 템플릿에서 사용할 데이터를 전달하고, render 함수를 사용하여 템플릿을 렌더링합니다.

DTL은 Django 템플릿 시스템의 강력한 기능 중 하나이며, 동적 웹 페이지 생성 및 데이터 표시에 매우 유용합니다. 필요에 따라 템플릿에서 사용할 데이터를 컨텍스트에 추가하고, 템플릿 파일을 작성하여 원하는 HTML을 생성할 수 있습니다.