16강 / 20강

Bootstrap — 데이터를 '보기 좋은 화면'으로

풀스택 뼈대 ④ 꾸미는 층

Bootstrap — 데이터를 '보기 좋은 화면'으로
Bootstrap은 미리 만들어 둔 부품 상자입니다. 조립만 하면 됩니다.

지난 강까지 오면 앱은 작동합니다. 그런데 화면은 1990년대 같아요. 글자는 붙어 있고, 표에는 선이 없고, 휴대폰으로 보면 글씨가 개미만 하죠.

CSS를 처음부터 배워야 할까요? 아닙니다. Bootstrap(부트스트랩)은 전 세계에서 가장 많이 쓰는 완성된 CSS 부품 상자예요. 우리는 부품 이름(클래스)만 붙이면 됩니다.

설치는 이 한 줄이 전부입니다

<!-- base.html 의 <head> 안에 -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">

이 한 줄만으로 글꼴·여백·색이 전부 정돈됩니다. 그 다음은 부품을 골라 쓰는 일이에요.

부품클래스쓰는 곳
버튼btn btn-primary담기 · 주문하기
카드card · card-body상품 한 개
표table table-striped주문 내역
뱃지badge bg-danger품절 · 신상품
입력칸form-control검색 · 수량
격자row · col-6 col-md-4상품 진열

👀 진짜로 보이는 예시

아래는 설명 그림이 아니라 진짜 Bootstrap 부품입니다. 이 강의 페이지도 Bootstrap 5로 만들어졌기 때문에 바로 보이는 거예요. 브라우저 창을 좁혔다 넓혀 보세요 — 카드가 저절로 줄을 바꿉니다.

🥤 텀블러

12,000원

12개 남음
🎧 무선 이어폰

59,000원

품절
📗 파이썬 교재

28,000원

8개 남음

이 카드 세 장을 손으로 세 번 쓴 게 아닙니다. Jinja2가 DB의 행 세 개를 받아 같은 틀로 세 번 찍어 낸 것이죠. 코드를 보면 이렇습니다.

3층 + 4층이 만나는 자리

이 강의 전체에서 가장 중요한 코드 한 조각일지도 모릅니다. DB의 행 → Jinja2 반복 → Bootstrap 카드가 한 화면에서 만납니다.

<!-- templates/products.html -->
{% extends "base.html" %}
{% block content %}

<div class="row g-3">                        <!-- 4층: 격자 -->
  {% for p in products %}                    <!-- 3층: DB 행만큼 반복 -->
  <div class="col-6 col-md-4 col-lg-3">
    <div class="card h-100">
      <div class="card-body">
        <h5 class="card-title">{{ p.emoji }} {{ p.name }}</h5>
        <p class="card-text text-secondary">{{ "{:,}".format(p.price) }}원</p>

        {% if p.stock > 0 %}
          <span class="badge bg-success">{{ p.stock }}개 남음</span>
          <button class="btn btn-primary btn-sm w-100 mt-3">담기</button>
        {% else %}
          <span class="badge bg-danger">품절</span>
          <button class="btn btn-secondary btn-sm w-100 mt-3" disabled>담기</button>
        {% endif %}

      </div>
    </div>
  </div>
  {% endfor %}
</div>

{% endblock %}

col-6 col-md-4 col-lg-3을 읽어 볼까요? 휴대폰에서는 한 줄에 2개(6/12), 태블릿은 3개(4/12), PC는 4개(3/12). 화면 크기에 따라 알아서 바뀌는 것을 반응형(responsive)이라고 합니다.

🎮 반응형 실험실 — 창을 줄이지 않고도 확인할 수 있습니다

아래에서 화면 크기를 바꿔 보세요. 휴대폰·태블릿·데스크톱에서 이 화면이 어떻게 보이는지 브라우저 창을 건드리지 않고 확인할 수 있습니다. 그리고 아래쪽 HTML은 15강의 Jinja2가 여러분의 DB 행으로 실제로 만들어 낸 것이에요.

  • 슬라이더를 768px 근처에서 천천히 움직여 보세요. 어느 순간 배치가 탁 바뀝니다 — 그 지점이 브레이크포인트입니다.
  • col-md- 값을 바꾸면 "12 ÷ 몇 = 한 줄에 몇 개"가 위에 계산되어 나옵니다.
  • 표로 바꾸고 화면을 375px로 줄인 뒤, table-responsive를 껐다 켜 보세요.
  • g-0 과 g-5 를 비교해 보세요. 간격 하나로 인상이 완전히 달라집니다.
  • 무엇을 눌러도 SQL과 파이썬은 그대로라는 점을 확인하세요. 바뀌는 건 클래스 이름뿐입니다.
반응형 실험실 — 같은 HTML이 화면 크기에 따라 어떻게 달라지나
불러오는 중…
🤔 확인 문제
상품 카드를 휴대폰에서는 2개씩, PC에서는 4개씩 보이게 하려면?