📌 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 연결을 실전처럼 연습할 수 있는 좋은 예제입니다. 반복문과 조건문, 정적 파일 적용까지 실무에 유용한 흐름으로 구성되어 있습니다.
'특강' 카테고리의 다른 글
[Django 3일차] Django Race Condition 해결 및 삭제 기능 구현 3/4 (short_url 프로젝트)(250514) (0) | 2025.05.14 |
---|---|
[Django 2일차] Django로 만드는 숏 URL 생성기 4/4 (250513) (0) | 2025.05.13 |
[Django 2일차] Django 마이그레이션과 ORM 실전 이해 가이드2/4 (250513) (0) | 2025.05.13 |
[Django 2일차] Django ORM과 마이그레이션 완전 정복 튜토리얼 1/4 (250513) (0) | 2025.05.13 |
[Django 1일차] 커스텀 유저 모델 구축 및 회원 시스템 설계 4/4 (250512) (0) | 2025.05.12 |