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

2025. 4. 29. 23:45·기술블로그-Django편

🔗 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 구조가 훨씬 잘 보입니다.
초기에는 모두 한 파일에 넣어보며 실험해보고, 점점 구조화해 나가보세요! 💡

'기술블로그-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
'기술블로그-Django편' 카테고리의 다른 글
  • 📝 파이썬 리스트 컴프리헨션 활용: 구구단 생성하기
  • 📌 Django URL 설정 및 템플릿 활용하기
  • 🌐 Django urls.py만으로 구현한 웹 애플리케이션
  • ➕ += vs .append() 완전 정복 – 언제 어떤 걸 써야 할까?
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (642) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (10)
      • 특강 (34) N
      • 기술블로그 (35) N
      • 기술블로그-Fastapi편 (9) N
      • 기술블로그-Django편 (151)
      • 기술블로그-Flask편 (35)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (72)
      • Fastapi (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
🔁 Django 전체 흐름 ( views, urls(route), models, templates)
상단으로

티스토리툴바