📌 Django URL 설정 및 템플릿 활용하기

2025. 4. 30. 01:49·기술블로그-Django편

📌 Django URL 설정 및 템플릿 활용하기

이번 포스팅에서는 Django의 URL 설정과 템플릿을 활용하여 간단한 페이지를 만드는 과정을 차근차근 정리해보겠습니다. 코드를 통해 흐름을 이해하고 실습까지 따라 해보세요!


📍 1. URL 설정(urls.py)

URL을 정의하여 요청이 들어왔을 때 어떤 뷰 함수로 처리할지 연결해줍니다.

from django.urls import path
from django.http import Http404
from django.shortcuts import render

# 책 목록 페이지
def book_list(request):
    return render(request, 'book_list.html')

# 특정 책 페이지
def book(request, num):
    return render(request, 'book_detail.html', {'num': num})

# 영화 정보 데이터
movie_list = [
    {'title': '파묘', 'director': '장재현'},
    {'title': '솔닭', 'director': '장재원'},
    {'title': '라집', 'director': '장재투'},
    {'title': '시나', 'director': '장재쓰리'},
]

# 영화 목록 페이지
def movies(request):
    return render(request, 'movies.html', {'movie_list': movie_list})

# 특정 영화 정보 페이지
def movie_detail(request, index):
    if index > len(movie_list) - 1:
        raise Http404
    movie = movie_list[index]
    context = {'movie': movie}
    return render(request, 'movie.html', context)

# URL 패턴 정의
urlpatterns = [
    path('book/<int:num>/', book),
    path('book_list/', book_list),
    path('movie/', movies),
    path('movie/<int:index>/', movie_detail),
]

📍 2. 템플릿 설정 (settings.py 변경)

Django 템플릿 설정을 BASE_DIR 기준으로 설정해야 합니다.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

📍 3. HTML 템플릿 파일 만들기

✅ book_list.html

책 목록을 출력하며 각 책 번호를 클릭하면 상세 페이지로 이동합니다.

<body>
    {% for num in '0123456789'|make_list %}
        <h1><a href="/book/{{ num }}/">Book {{ num }}</a></h1>
    {% endfor %}
</body>

✅ book_detail.html

선택된 책의 번호를 상세 페이지에 표시합니다.

<body>
    <h1>{{ num }}번째 페이지입니다.</h1>
</body>

✅ movies.html

상위 3개의 영화 정보를 링크로 표시합니다.

<body>
    {% for movie in movie_list %}
        {% if forloop.counter <= 3 %}
            {{ forloop.counter }}위: <a href="/movie/{{ forloop.counter0 }}">{{ movie.title }}</a><br>
        {% endif %}
    {% endfor %}
</body>

✅ movie.html

선택된 영화의 제목과 감독 정보를 표시합니다.

<body>
    <h1>{{ movie.title }}</h1>
    <p>감독: {{ movie.director }}</p>
</body>

🧩 동작 흐름 정리

  1. 사용자가 URL로 접속 → URL 패턴 매칭
  2. 해당 URL 패턴의 뷰 함수 호출
  3. 뷰 함수에서 데이터를 처리하고 HTML 템플릿에 전달
  4. 템플릿이 데이터를 이용해 페이지를 렌더링 → 사용자에게 표시

이 과정을 통해 사용자는 요청한 페이지를 정확히 보게 됩니다.


🚀 실습 팁

  • 각 URL에 접속하여 원하는 결과가 잘 나오는지 확인해보세요.
  • 오류가 발생하면 Django가 제공하는 친절한 에러 메시지를 참고하여 디버깅하세요!

이제 Django URL과 템플릿을 자유롭게 활용해 나만의 웹페이지를 만들어 보세요! 😊

'기술블로그-Django편' 카테고리의 다른 글

Django 템플릿 for문 완전 정복: 리스트 컴프리헨션(튜플형태) + 템플릿 반복문 해석  (0) 2025.04.30
📝 파이썬 리스트 컴프리헨션 활용: 구구단 생성하기  (0) 2025.04.30
🔁 Django 전체 흐름 ( views, urls(route), models, templates)  (0) 2025.04.29
🌐 Django urls.py만으로 구현한 웹 애플리케이션  (0) 2025.04.29
➕ += vs .append() 완전 정복 – 언제 어떤 걸 써야 할까?  (0) 2025.04.29
'기술블로그-Django편' 카테고리의 다른 글
  • Django 템플릿 for문 완전 정복: 리스트 컴프리헨션(튜플형태) + 템플릿 반복문 해석
  • 📝 파이썬 리스트 컴프리헨션 활용: 구구단 생성하기
  • 🔁 Django 전체 흐름 ( views, urls(route), models, templates)
  • 🌐 Django urls.py만으로 구현한 웹 애플리케이션
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (597) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (10)
      • 특강 (29)
      • 기술블로그 (32)
      • 기술블로그-Django편 (136) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4) N
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (61)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📌 Django URL 설정 및 템플릿 활용하기
상단으로

티스토리툴바