🔗 Django에서 라우팅(Route)은 무엇이고 왜 중요한가?
웹 프레임워크를 공부하면서 가장 헷갈리는 개념 중 하나가 바로 Routing(라우팅) 과 View(뷰) 의 차이입니다.
Django에서도 많은 초보자들이 urls.py와 views.py의 역할을 혼동하곤 합니다.
이 글에서는 그 차이를 Django 구조 흐름과 함께 쉽게 정리해드립니다.
🔁 Django 전체 흐름 다시 정리하면:
- 사용자가 주소 입력 (예: /movie/2/)
- 👉 urls.py (라우팅): 이 URL을 어떤 view 함수에 연결할지 결정
- 👉 이게 바로 Route!
- 🧠 views.py (뷰): 요청을 처리하고
- 🧾 필요 시 models.py에서 DB 조회
- 🎨 templates/ (템플릿): 사용자에게 보여줄 HTML을 렌더링
- 🔁 다시 웹서버 → 브라우저로 응답
🚦 먼저, 라우팅(Routing)이란?
"사용자가 접속한 URL 주소를 보고, 어떤 기능(함수)을 실행할지 결정하는 것"
즉, 주소와 처리 로직을 연결해주는 역할입니다.
✅ Django에서 라우팅은 urls.py 파일이 담당합니다.
from django.urls import path
from . import views
urlpatterns = [
path('movie/<int:index>/', views.movie_detail)
]
위 예제는 다음을 의미합니다:
사용자가 /movie/0/ 으로 접속하면 views.movie_detail() 함수가 실행된다!
🧠 View는 뭘까?
"라우팅에 의해 호출된 함수로, 요청을 처리하고 응답을 생성하는 로직"
Django에서는 views.py 에 정의되며, 데이터 처리, 템플릿 렌더링, API 응답 등 다양한 역할을 수행합니다.
def movie_detail(request, index):
return HttpResponse(f"{index}번 영화 페이지입니다.")
🔄 Django의 전체 흐름 정리
- 사용자가 브라우저에 주소 입력 → 예: /movie/2/
- Django는 urls.py에서 해당 주소를 찾아 어떤 뷰로 보낼지 결정 (라우팅)
- 해당 뷰 함수 실행 → views.py
- 필요한 경우 models.py에서 DB 조회
- templates/로 화면 구성
- 브라우저에 응답 반환
[사용자 요청]
↓
urls.py (Route)
↓
views.py (Logic)
↓
models.py, templates 등
↓
HttpResponse → 브라우저
🔍 라우팅과 뷰는 이렇게 다르다
구분 라우팅 (urls.py) 뷰 (views.py)
역할 | URL → 함수 연결 | 요청 처리 & 응답 반환 |
위치 | 프로젝트 or 앱 내부 urls.py | 앱 내부 views.py |
예시 | path('movie/1/', views.movie_detail) | def movie_detail(request): ... |
💬 자주 하는 질문 정리
Q. 라우팅이 곧 뷰 아닌가요?
❌ 아니요!
라우팅은 연결, 뷰는 처리입니다.
같은 파일(urls.py)에 있어도 역할이 다르며, Django 구조에선 분리해서 관리합니다.
Q. urls.py만으로 다 구현해도 되나요?
⭕ 가능은 합니다 (예: 학습용),
하지만 실제 서비스에서는 views.py, templates, models.py를 분리하여 유지보수를 쉽게 합니다.
✅ 한 줄 요약
라우팅은 길 안내 (urls.py),
뷰는 실제 서비스 처리 (views.py) 입니다.
이 개념만 정확히 잡아도 Django 구조가 훨씬 잘 보입니다.
초기에는 모두 한 파일에 넣어보며 실험해보고, 점점 구조화해 나가보세요! 💡
'기술블로그' 카테고리의 다른 글
📝 파이썬 리스트 컴프리헨션 활용: 구구단 생성하기 (0) | 2025.04.30 |
---|---|
📌 Django URL 설정 및 템플릿 활용하기 (0) | 2025.04.30 |
🌐 Django urls.py만으로 구현한 웹 애플리케이션 (0) | 2025.04.29 |
➕ += vs .append() 완전 정복 – 언제 어떤 걸 써야 할까? (0) | 2025.04.29 |
🔢 enumerate() 함수 완벽 가이드 – 인덱스와 함께 반복하자! (0) | 2025.04.29 |