특강

[Django 2일차] Django로 숏 URL 생성 서비스 만들기 3/4 (250513)

Chansman 2025. 5. 13. 17:06

📌 Django로 숏 URL 생성 서비스 만들기 - 실전 강의 요약


이 글은 Django 프레임워크를 활용하여 숏 URL 생성 서비스를 개발하는 과정을 정리한 강의 요약입니다. 데이터 모델링, 마이그레이션, HTML 템플릿, 뷰와 라우팅 설정, 부트스트랩 적용까지 웹 개발의 전 과정을 순차적으로 설명하며, 핵심 코드와 실습 흐름을 담고 있습니다.


1️⃣ 데이터 모델링과 마이그레이션 적용

✔️ 목표: 숏 URL 데이터를 저장할 테이블 생성

  • python manage.py makemigrations → 마이그레이션 파일 생성
  • python manage.py migrate → 실제 DB 테이블 반영

📝 생성된 파일은 migrations 폴더에 저장되며, SQL로 변환되어 DB에 실행됩니다.

# 터미널 명령어
python manage.py makemigrations
python manage.py migrate

2️⃣ 템플릿 구조와 부트스트랩 적용

✔️ base.html 구성: 중복 CSS 코드 제거 및 공통 템플릿 구조화

  • templates 폴더 생성 후, base.html 파일 생성
  • title, Bootstrap CDN, block content 정의




    
    

📎 Short URL

    {% block content %}{% endblock %}


3️⃣ 홈 페이지 구성 (home.html)

✔️ 상속 구조: base.html을 상속받아 내용 추가

  • {% extends 'base.html' %} 사용
  • {% block content %} 내에 실제 데이터 테이블 구성
<!-- home.html -->
{% extends 'base.html' %}
{% block content %}
<div class="container">
  <table class="table">
    <thead>
      <tr>
        <th>#</th><th>Short URL</th><th>Original URL</th><th>Access Count</th><th>Created</th>
      </tr>
    </thead>
    <tbody>
      {% for short_url in short_urls %}
        <tr>
          <td>{{ forloop.counter }}</td>
          <td>{{ short_url.code }}</td>
          <td>{{ short_url.original_url }}</td>
          <td>{{ short_url.access_count }}</td>
          <td>{{ short_url.created_at }}</td>
        </tr>
      {% empty %}
        <tr>
          <td colspan="5" class="text-center">No Data</td>
        </tr>
      {% endfor %}
    </tbody>
  </table>
</div>
{% endblock %}

4️⃣ 뷰(Views)와 라우팅 설정

✔️ 홈 뷰 생성: 템플릿에 DB 데이터를 넘겨주는 역할

  • 함수형 뷰(views.py) 작성
  • render() 함수로 HTML + 데이터 바인딩 처리
# views.py
from django.shortcuts import render
from .models import ShortURL

def home_view(request):
    short_urls = ShortURL.objects.all()
    return render(request, 'home.html', {'short_urls': short_urls})

✔️ URLConf 연결: 클라이언트 요청 경로를 해당 뷰에 연결

# urls.py (config or app)
from django.urls import path
from .views import home_view

urlpatterns = [
    path('', home_view, name='home'),
]

5️⃣ 데이터 추가 및 화면 반영

✔️ DB에 샘플 데이터 추가:

# Django Shell
python manage.py shell

from shortner.models import ShortURL
ShortURL.objects.create(code='abc123', original_url='https://google.com')
ShortURL.objects.create(code='xyz456', original_url='https://naver.com')

📈 새로고침 시, 테이블에 데이터가 즉시 반영됨.

🔍 실무 팁 및 주의사항

템플릿 상속 구조로 유지보수 효율화
Bootstrap 사용 시 CDN 오류 여부 확인 필요
❌ 데이터가 없을 경우를 대비해 {% empty %} 구문 활용
✅ 테이블 컬럼 변경 시, 헤더와 td 개수 동기화 필수


이 프로젝트는 장고의 기본기를 익히고, 템플릿 구성과 모델-뷰-URL 연결을 실전처럼 연습할 수 있는 좋은 예제입니다. 반복문과 조건문, 정적 파일 적용까지 실무에 유용한 흐름으로 구성되어 있습니다.