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

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 연결을 실전처럼 연습할 수 있는 좋은 예제입니다. 반복문과 조건문, 정적 파일 적용까지 실무에 유용한 흐름으로 구성되어 있습니다.

'특강' 카테고리의 다른 글

[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
'특강' 카테고리의 다른 글
  • [Django 3일차] Django Race Condition 해결 및 삭제 기능 구현 3/4 (short_url 프로젝트)(250514)
  • [Django 2일차] Django로 만드는 숏 URL 생성기 4/4 (250513)
  • [Django 2일차] Django 마이그레이션과 ORM 실전 이해 가이드2/4 (250513)
  • [Django 2일차] Django ORM과 마이그레이션 완전 정복 튜토리얼 1/4 (250513)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Python (32)
      • 프로젝트 (110)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    RM
    urbantrends
    remittance
    smartphonedurability
    self-growth
    travel ban
    youngprofessionals
    livebroadcast
    hotcoffeecase
    college reunions
    basalcellcarcinoma
    bts
    btsjungkook
    btsreunion
    americaparty
    life reflection
    btscomeback
    chatgpterror
    newpoliticalparty
    lawsuitculture
    뷔
    homebartrend
    titaniumcase
    americanlaw
    btsdischarge
    classaction
    global politics
    chinanightlife
    gpterror
    trumpmuskclash
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
[Django 2일차] Django로 숏 URL 생성 서비스 만들기 3/4 (250513)
상단으로

티스토리툴바