Chapter 1-7 Django - 가짜 데이터베이스로 웹 페이지 만들기 튜토리얼

2025. 4. 29. 17:24·Django

🎬 Django - 가짜 데이터베이스로 웹 페이지 만들기 튜토리얼


📌 튜토리얼 핵심 요약

이 튜토리얼은 가짜 데이터베이스를 활용하여 영화 순위 목록을 만들고, 각 영화의 상세 페이지로 연결하는 방법을 안내합니다. 핵심은 리스트 컴프리헨션과 enumerate를 사용하여 데이터를 효율적으로 처리하고, URL 패턴을 설정하여 각 영화에 대한 상세 페이지를 구현하는 것입니다. 또한, 예외 처리를 통해 404 오류를 적절히 처리하여 사용자 경험을 개선하는 방법을 제시합니다.


1️⃣ 가짜 데이터베이스 구성하기

# 가짜 데이터베이스 (영화 목록)
movie_list = [
    {"title": "파묘", "director": "장재현"},
    {"title": "원카", "director": "홍길동"},
    {"title": "균", "director": "김철수"},
    {"title": "시민", "director": "이영희"},
    {"title": "더키", "director": "박민수"}
]

✅ 주제는 자유롭게 변경 가능 (애니메이션, 게임 등) ✅ 두 가지 이상의 값을 가진 구조 (예: 타이틀, 디렉터)


2️⃣ 목록 페이지 만들기 (리스트 컴프리헨션 활용)

from django.http import HttpResponse

def movie_titles(request):
    titles = [movie["title"] for movie in movie_list]
    response_text = "<br>".join(titles)
    return HttpResponse(response_text)

✅ 리스트 컴프리헨션으로 간단하게 타이틀만 출력 ✅ <br>로 줄바꿈하여 출력 ✅ URL 패턴에 등록하여 /movies/ 접속 시 목록 출력

# urls.py
path('movies/', movie_titles)

3️⃣ 상세 페이지 구현 및 에러 처리

from django.http import Http404

def movie_detail(request, index):
    if index >= len(movie_list):
        raise Http404("페이지를 찾을 수 없습니다.")
    movie = movie_list[index]
    response_text = f"<h1>{movie['title']}</h1><p>감독: {movie['director']}</p>"
    return HttpResponse(response_text)

✅ 인덱스를 URL에서 받아 해당 영화 정보 출력 ✅ 존재하지 않는 인덱스 접근 시 404 에러 발생 ✅ 400번대(클라이언트 잘못)와 500번대(서버 잘못) 에러 구분 강조

# urls.py
path('movie/<int:index>/', movie_detail)

4️⃣ 목록에서 상세 페이지로 이동 (클릭 기능 추가)

def movie_titles_with_link(request):
    links = [
        f'<a href="/movie/{index}/">{movie["title"]}</a><br>'
        for index, movie in enumerate(movie_list)
    ]
    response_text = "".join(links)
    return HttpResponse(response_text)

✅ enumerate로 인덱스와 타이틀을 함께 가져오기 ✅ <a> 태그로 각각의 상세 페이지로 이동 링크 생성 ✅ 줄바꿈 <br> 추가로 깔끔한 출력

# urls.py
path('movies_with_link/', movie_titles_with_link)

5️⃣ 리스트 컴프리헨션 + Enumerate 심화 사용

def movie_titles_optimized(request):
    response_text = "<br>".join(
        f'<a href="/movie/{index}/">{movie["title"]}</a>'
        for index, movie in enumerate(movie_list)
    )
    return HttpResponse(response_text)

✅ 리스트 컴프리헨션 안에 enumerate 바로 활용 ✅ 더 간결하고 깔끔한 코드 작성 가능 ✅ 최종적으로 깔끔한 링크 목록 완성


✅ 최종 요약

  • 데이터베이스 없이 리스트/딕셔너리로 간단한 웹앱 구현 가능
  • URLconf를 활용하여 목록과 상세 페이지를 구분하여 처리
  • 404 오류를 명확히 처리하여 사용자 경험 개선
  • enumerate와 리스트 컴프리헨션을 활용해 코드 최적화 가능

👉 이 튜토리얼을 통해 Django에서 웹 페이지 구성의 기본과 데이터 출력 흐름을 마스터할 수 있습니다! 🚀

'Django' 카테고리의 다른 글

Chapter 1-9 Django 템플릿 구성 파일 개발 & 방안  (0) 2025.04.29
Chapter 1-8 Django 템플릿 설정 및 문법 기초 정리  (0) 2025.04.29
Chapter 1-6 Django 기본 HTTP 응답 만들기 튜토리얼  (0) 2025.04.29
Chapter 1-2 Windows에서 pyenv + 가상환경 설정법 (Mac 과정 대응 버전)  (0) 2025.04.29
Chapter 1-5 Django 프로젝트 시작하기 - 가상환경 설정부터 구조 이해까지  (0) 2025.04.29
'Django' 카테고리의 다른 글
  • Chapter 1-9 Django 템플릿 구성 파일 개발 & 방안
  • Chapter 1-8 Django 템플릿 설정 및 문법 기초 정리
  • Chapter 1-6 Django 기본 HTTP 응답 만들기 튜토리얼
  • Chapter 1-2 Windows에서 pyenv + 가상환경 설정법 (Mac 과정 대응 버전)
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
    chatgpterror
    livebroadcast
    smartphonedurability
    bts
    americanlaw
    gpterror
    homebartrend
    remittance
    youngprofessionals
    newpoliticalparty
    lawsuitculture
    btsjungkook
    basalcellcarcinoma
    btscomeback
    americaparty
    hotcoffeecase
    classaction
    urbantrends
    titaniumcase
    trumpmuskclash
    btsreunion
    chinanightlife
    life reflection
    btsdischarge
    global politics
    college reunions
    travel ban
    뷔
    self-growth
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 1-7 Django - 가짜 데이터베이스로 웹 페이지 만들기 튜토리얼
상단으로

티스토리툴바