기술블로그-Django편

📌 Django URL 패턴 등록 순서 완전 정리

Chansman 2025. 5. 14. 11:23

📌 Django URL 패턴 등록 순서 완전 정리


✅ 1. 왜 URL 순서가 중요할까?

Django는 urlpatterns 리스트를 위에서 아래로 순차적으로 검사합니다.

✔️ 가장 먼저 매칭되는 URL이 있으면 해당 뷰로 이동하고, 이후 항목은 무시합니다.

따라서 동적 패턴가장 마지막에 두어야 예상한 라우팅이 정확하게 작동합니다.


✅ 2. 올바른 URL 등록 순서 예시

urlpatterns = [
    path('admin/', admin.site.urls),                        # 1. 정적 경로
    path('', views.home_view, name='home'),                # 2. 홈
    path('short-urls/', views.short_url_create_view),      # 3. 폼 처리
    path('', include('shortener.urls')),                   # 4. 앱 URL
    path('<str:code>/', views.redirect_view),              # 5. ✅ 마지막에 동적 경로
]

❌ 잘못된 예시

urlpatterns = [
    path('<str:code>/', views.redirect_view),  # ❌ 모든 경로를 가로챔
    path('short-urls/', views.short_url_create_view),
]

🔴 이렇게 하면 /short-urls/ 요청도 <str:code>/로 처리됨 → 원하지 않은 라우팅 발생


🧭 시각적 흐름도

[요청: /short-urls/]
     ↓
1. /admin/          ❌ 불일치
2. /               ❌ 불일치
3. /short-urls/    ✅ 일치! → 해당 뷰 실행
4. ... 이후 무시

[요청: /abc/]
     ↓
1. /admin/          ❌
2. /                ❌
3. /short-urls/     ❌
4. /abc/ (동적)     ✅ → redirect_view 실행

✅ 요약

등록 순서 설명

정적 URL 먼저 등록 (/admin/, /short-urls/)
동적 URL 반드시 맨 마지막 (<str:code>/)

✔️ 올바른 순서를 지키면 원하는 URL 경로만 정확히 처리 가능합니다.

✔️ 반대로 순서를 어기면 모든 경로를 동적 패턴이 가로채는 버그 발생할 수 있어요 ⚠️