Django 프론트& 백엔드 개발

[Model] 하드 코딩을 피하고, Django답게 화면 만들기

Data Jun 2026. 1. 4. 20:35

웹 개발을 처음 시작하면 HTML에 데이터를 직접 적어 넣는 경우가 많습니다.
하지만 Django에서는 이런 방식은 지양해야 할 형태입니다.

 

1. 하드 코딩(Hard Coding)이란?

하드 코딩이란

 소스 코드 안에 데이터가 직접 들어가 있는 상태를 말합니다.

<h3>코딩에 빠진 닭</h3>
<p>주머니가 가벼운 당신의 마음까지 생각한 가격!</p>

이 방식의 문제점은 명확합니다.

  • 데이터가 늘어나면 코드가 폭발
  • 수정할 때 HTML을 직접 고쳐야 함
  • 데이터 재사용 불가능
  • 유지보수 매우 어려움

2. Django식 해결 방법: View → Template

Django에서는 데이터와 화면을 분리합니다.

 

1️⃣ View에서 데이터 준비

def index(request):
    today = str(datetime.today().date())
    menus = Menu.objects.all()

    context = {
        "date": today,
        "menus": menus
    }

    return render(request, 'foods/index.html', context)
  • DB에서 데이터 조회
  • context 딕셔너리로 템플릿에 전달

 

2️⃣ Template에서 반복 렌더링

{% block food-container %}
{% for menu in menus %}
  <div class="food">
    <img src="{% get_static_prefix %}{{ menu.img_path }}"
         width="300px" height="200px" />

    <div class="info">
      <h3>{{ menu.name }}</h3>
      <p>{{ menu.description }}</p>
      <a href="#">메뉴 보기</a>
    </div>
  </div>
{% endfor %}
{% endblock food-container %}

 

  • {% for %}로 데이터 반복 출력
  • HTML 구조는 그대로 유지
  • 데이터만 바뀌면 화면 자동 변경

 

3. 정리하면

HTML은 구조만,
데이터는 View와 DB가 책임진다.

이게 바로 Django가 추구하는 MVC(MVT) 구조의 핵심입니다.

 

처음에는 하드 코딩이 편해 보이지만,
데이터가 늘어나는 순간 한계가 바로 드러납니다.

 

Django에서는
 - 하드 코딩 ❌
 - View + Template + DB ⭕

이 흐름으로 가는 것이
실무에서도, 공부에서도 가장 올바른 방향입니다 👍