🔗 Django URL 설정 완벽 가이드
Django 웹 프레임워크에서 URL 설정은 사용자 요청을 적절한 View로 연결하는 핵심 역할을 합니다. 이 글에서는 URL 엔드포인트, path(), include()의 개념과 사용법을 예제와 함께 시각적, 흐름 중심으로 정리합니다.
1️⃣ URL 엔드포인트란?
**엔드포인트(endpoint)**는 사용자가 웹사이트에 접속할 때 사용하는 URL의 종착지를 의미합니다. 이 엔드포인트는 Django에서 각각의 view 함수 또는 클래스와 연결됩니다.
🧭 예:
- example.com/posts/ → 게시글 리스트 보기
- example.com/posts/3/ → 게시글 상세 보기 (ID = 3)
🔗 이처럼 URL은 사용자의 요청을 라우팅해주는 통로입니다.
2️⃣ urlpatterns 구조 이해하기
모든 Django 프로젝트는 기본적으로 urlpatterns라는 리스트를 통해 URL과 뷰(view)를 연결합니다.
📌 기본 구조 예시
# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('<int:pk>/', views.post_detail, name='post_detail'),
]
🔍 설명
요소 의미
path() | URL 패턴을 정의하는 함수 |
'' | 루트 URL (ex. /blog/) |
<int:pk>/ | 동적 URL: 정수형 파라미터 pk를 받음 |
name | URL 이름 지정, 템플릿에서 reverse() 가능 |
3️⃣ URL Include 사용법
Django에서는 앱 단위로 URL 파일을 분리하고, 메인 config/urls.py에서 include()를 통해 불러오는 방식으로 관리합니다.
📌 예제: config/urls.py
# config/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')), # ✅ blog 앱의 URL 연결
]
✅ 장점
- 앱마다 urls.py를 나누어 유지보수가 편리함
- 기능별로 URL을 논리적으로 분리 가능
4️⃣ path 함수의 구체적 사용법
path() 함수는 URL 패턴을 정의하며 다음과 같은 인자를 받습니다:
path(route, view, kwargs=None, name=None)
인자 설명
route | URL 경로 문자열, <int:id> 등 포함 가능 |
view | 연결될 함수 또는 클래스 기반 뷰 |
kwargs | 추가적으로 전달할 딕셔너리 데이터 |
name | URL 이름 지정 (reverse 함수나 템플릿에 유용) |
📌 실전 예제
path('post/<int:pk>/', views.post_detail, name='post_detail')
- /post/3/처럼 URL에서 pk값(예: 3)을 받아서 views.post_detail(pk=3)으로 전달
- name='post_detail'로 지정하면 템플릿에서 {% url 'post_detail' pk=3 %}로 호출 가능
5️⃣ include 함수의 구체적 사용법
include()는 다른 URLconf 파일을 중첩해서 불러올 때 사용합니다. 일반적으로 앱별로 urls.py를 만든 후, config/urls.py에서 모듈별로 include 처리합니다.
예시 구조
project/
├── config/
│ └── urls.py
├── blog/
│ └── urls.py
📌 config/urls.py
path('blog/', include('blog.urls'))
📌 blog/urls.py
urlpatterns = [
path('', views.post_list),
path('<int:id>/', views.post_detail),
]
✅ 흐름
- /blog/ → blog.urls 로 이동
- /blog/3/ → blog의 post_detail 뷰 호출
🧠 실전 팁 & 주의사항
✅ **URL 이름(name)**을 꼭 지정하세요 → 템플릿에서 url 태그, reverse() 함수에서 사용합니다.
✅ URL 이름은 중복되지 않도록 앱별 prefix나 네임스페이스 사용을 고려하세요.
❌ 하나의 urls.py에 모든 path를 몰아넣지 마세요 → include로 분리하는 것이 유지보수에 용이합니다.
🎯 요약 정리
- path()는 URL과 view를 연결하는 함수
- include()는 다른 앱의 URLconf를 메인에 포함시키는 함수
- urlpatterns에 등록된 패턴만 사용자 요청을 처리할 수 있음
- name 속성을 잘 활용하면 템플릿이나 리다이렉트에서 매우 유용
'기술블로그-Django편' 카테고리의 다른 글
🛠️ Django ORM 완벽 가이드 (0) | 2025.05.14 |
---|---|
📝 Django Form 기본 정리 (0) | 2025.05.14 |
⚙️ Django Function-Based View (FBV) 완전 이해하기 (0) | 2025.05.14 |
🧩 Django Jinja 템플릿 완전 가이드 (0) | 2025.05.14 |
🧱 Django Database Model 완전 정복 (0) | 2025.05.14 |