오늘의 TIL: Django Template

1. Django Template이란?

  • Django Template은 HTML 파일에 Python 코드를 삽입하여 동적으로 콘텐츠를 생성할 수 있게 해주는 기능입니다.
  • 서버에서 처리된 데이터를 템플릿을 통해 사용자에게 전달하며, 주로 views.py와 함께 사용됩니다.

2. Template 파일의 위치

  • 기본적으로 Django는 settings.py에서 정의한 TEMPLATES 설정의 DIRS 경로에 템플릿 파일을 찾습니다.
  • 템플릿 파일은 일반적으로 프로젝트 구조에서 templates 폴더에 저장됩니다.
    myproject/
    ├── myapp/
    │   ├── templates/
    │   │   ├── myapp/
    │   │   │   ├── index.html
    
  • 예시 구조:

3. 템플릿 태그와 필터

  • 템플릿 태그: 데이터 흐름과 조건문, 반복문 등을 HTML 내에서 작성하기 위해 사용.
    • {% for item in list %} ... {% endfor %}
    • {% if condition %} ... {% endif %}
  • 템플릿 필터: 데이터를 변형하거나 출력 형식을 지정.
    • {{ value|lower }}: 값을 소문자로 변환.
    • {{ value|date:"Y-m-d" }}: 날짜 형식 지정.

4. Context와 데이터 전달

  • views.py에서 템플릿에 데이터를 전달하려면 render() 함수를 사용.
    from django.shortcuts import render
    
    def my_view(request):
        context = {'name': 'Django', 'items': [1, 2, 3]}
        return render(request, 'myapp/index.html', context)
    
    템플릿 (index.html):
  • <h1>Welcome, {{ name }}!</h1> <ul> {% for item in items %} <li>{{ item }}</li> {% endfor %} </ul>
  • 예시:

5. Static 파일 사용

  • 템플릿에서 정적 파일(이미지, CSS, JavaScript 등)을 사용하려면 {% load static %} 태그를 선언.
    {% load static %}
    <link rel="stylesheet" href="{% static 'css/styles.css' %}">
    <img src="{% static 'images/logo.png' %}" alt="Logo">
    
  • 예시:

6. 오늘 느낀 점

  • 템플릿 태그와 필터를 활용하면 백엔드에서 처리한 데이터를 효과적으로 사용자에게 전달할 수 있음을 알게 되었다.
  • 특히 {% for %} 반복문과 {% if %} 조건문을 이용해 동적인 HTML 구성을 쉽게 할 수 있었다.
  • 앞으로는 더 복잡한 템플릿 구조와 확장(Include, Block, Extend 등)을 익히고, 실제 프로젝트에 적용해보고 싶다.

+ Recent posts