Django 프론트& 백엔드 개발

Django에서 동적 URL(Dynamic URL) 사용하기

Data Jun 2026. 1. 4. 12:11

Django에서는 URL 경로에 변수를 포함시켜
하나의 URL 패턴으로 여러 페이지를 처리할 수 있습니다.
이 방식을 보통 동적 URL(Dynamic URL) 이라고 부릅니다.

 

1. URL에 변수 선언하기

# urls.py
urlpatterns = [
    path("index/", views.index),
    path("menu/<str:food>/", views.food_detail),
]
  • <str:food> → 경로 변수(Path Variable)
  • str : 문자열 타입
  • food : 변수 이름

이 한 줄로 아래 URL들이 모두 처리됩니다.

/foods/menu/pasta
/foods/menu/chicken
/foods/menu/sushi

 

2. View에서 경로 변수 받기

def food_detail(request, food):
    context = {
        "name": food
    }
    return render(request, "foods/detail.html", context)
  • URL에 들어온 pasta, chicken 같은 값이
  • food 파라미터로 그대로 전달됨

URL이 곧 데이터의 역할을 합니다.

 

3. Template에서 출력하기

<!-- detail.html -->
<h2>{{ name }}</h2>
  • View에서 전달한 값이 템플릿 변수로 치환
  • /menu/pasta → pasta 출력
  • /menu/chicken → chicken 출력

URL에 따라 화면 내용이 달라지는 동적 페이지가 완성됩니다.

 

4. 왜 동적 URL을 사용할까?

  • 메뉴마다 URL을 따로 만들 필요 ❌
  • 하나의 view + 하나의 template로 처리 ⭕
  • URL이 의미를 가지는 우아한 URL 구조

유지보수도 쉽고, 확장도 편합니다.

 

5. 정리하면

  • <str:변수명> → 경로 변수
  • URL 값이 view 함수로 전달됨
  • view → template로 넘겨 화면에 출력
  • 이것이 Django 동적 URL의 핵심 구조

URL이 곧 데이터가 되는 구조