기술블로그-Django편

🔁 Django 전체 흐름 ( views, urls(route), models, templates)

Chansman 2025. 4. 29. 23:45

🔗 Django에서 라우팅(Route)은 무엇이고 왜 중요한가?

웹 프레임워크를 공부하면서 가장 헷갈리는 개념 중 하나가 바로 Routing(라우팅)View(뷰) 의 차이입니다.
Django에서도 많은 초보자들이 urls.py와 views.py의 역할을 혼동하곤 합니다.
이 글에서는 그 차이를 Django 구조 흐름과 함께 쉽게 정리해드립니다.

 

🔁 Django 전체 흐름 다시 정리하면:

  1. 사용자가 주소 입력 (예: /movie/2/)
  2. 👉 urls.py (라우팅): 이 URL을 어떤 view 함수에 연결할지 결정
  3. 👉 이게 바로 Route!
  4. 🧠 views.py (뷰): 요청을 처리하고
  5. 🧾 필요 시 models.py에서 DB 조회
  6. 🎨 templates/ (템플릿): 사용자에게 보여줄 HTML을 렌더링
  7. 🔁 다시 웹서버 → 브라우저로 응답

🚦 먼저, 라우팅(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의 전체 흐름 정리

  1. 사용자가 브라우저에 주소 입력 → 예: /movie/2/
  2. Django는 urls.py에서 해당 주소를 찾아 어떤 뷰로 보낼지 결정 (라우팅)
  3. 해당 뷰 함수 실행 → views.py
  4. 필요한 경우 models.py에서 DB 조회
  5. templates/로 화면 구성
  6. 브라우저에 응답 반환
   [사용자 요청]
        ↓
    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 구조가 훨씬 잘 보입니다.
초기에는 모두 한 파일에 넣어보며 실험해보고, 점점 구조화해 나가보세요! 💡