[파이썬][Django] 템플릿 태그와 필터 활용 방법과 예제


Django 템플릿에서 템플릿 태그와 필터를 활용하여 동적으로 웹 페이지를 생성하고 데이터를 처리하는 방법을 설명하겠습니다. 템플릿 태그는 `{% %}` 형식을 사용하며, 필터는 `{{ }}` 형식을 사용합니다.


템플릿 태그

조건문 (if)

if 템플릿 태그를 사용하여 조건에 따라 내용을 표시하거나 숨길 수 있습니다.

<pre>
<code>

{% if user.is_authenticated %}
    <p>Welcome, {{ user.username }}!</p>
{% else %}
    <p>Please log in.</p>
{% endif %}

</code>
</pre>

반복문 (for)

for 템플릿 태그를 사용하여 리스트나 쿼리셋을 반복하며 내용을 생성할 수 있습니다.

<pre>
<code>

<ul>
{% for item in items %}
    <li>{{ item.name }}</li>
{% endfor %}
</ul>

</code>
</pre>

주석 (comment)

comment 템플릿 태그를 사용하여 주석을 추가할 수 있습니다.

<pre>
<code>

{# This is a comment #}

</code>
</pre>

블록 정의 (block)

block 템플릿 태그를 사용하여 블록을 정의하고 나중에 오버라이드할 수 있습니다. 주로 템플릿 상속에서 사용됩니다.

<pre>
<code>

{% block content %}
    Default content here.
{% endblock %}

</code>
</pre>

필터

날짜 포맷 (date)

date 필터를 사용하여 날짜를 원하는 형식으로 포맷할 수 있습니다.

<pre>
<code>

{{ some_date|date:"Y-m-d" }}

</code>
</pre>

문자열 대/소문자 변환 (lower, upper)

lowerupper 필터를 사용하여 문자열을 소문자 또는 대문자로 변환할 수 있습니다.

<pre>
<code>

{{ some_text|lower }}
{{ some_text|upper }}

</code>
</pre>

길이 확인 (length)

length 필터를 사용하여 리스트, 문자열 등의 길이를 확인할 수 있습니다.

<pre>
<code>

{{ my_list|length }}
{{ my_string|length }}

</code>
</pre>

숫자 포맷 (floatformat)

floatformat 필터를 사용하여 부동 소수점 숫자를 지정된 소수 자릿수로 포맷할 수 있습니다.

<pre>
<code>

{{ my_float|floatformat:2 }}

</code>
</pre>

예제

다음은 템플릿 태그와 필터의 실제 예제입니다.

<pre>
<code>

{% if user.is_authenticated %}
    <h1>Welcome, {{ user.username }}!</h1>
{% else %}
    <h1>Please log in.</h1>
{% endif %}

<ul>
{% for product in products %}
    <li>{{ product.name }} - ${{ product.price|floatformat:2 }}</li>
{% endfor %}
</ul>

</code>
</pre>

위의 예제에서 if 태그를 사용하여 사용자 인증 상태에 따라 다른 환영 메시지를 표시하고, for 태그를 사용하여 제품 목록을 반복하며 제품 이름과 가격을 표시합니다. floatformat 필터를 사용하여 가격을 소수점 둘째 자리까지 포맷합니다.

Django의 템플릿 태그와 필터는 템플릿에서 데이터를 동적으로 처리하고 표시하는 데 매우 유용합니다. 웹 페이지를 구성하고 표시할 때 이러한 기능을 활용하여 데이터를 보다 효과적으로 제어할 수 있습니다.