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
  • 전체
    오늘
    어제
    • 분류 전체보기 (702)
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (40)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

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

티스토리툴바