Django 프론트& 백엔드 개발

Django에서 요청(Request)과 응답(Response) 흐름 이해하기

Data Jun 2026. 1. 3. 14:51

Django에서 웹 페이지가 어떻게 브라우저에 전달되는지 이해하려면
URL → View → Response 흐름을 잡는 것이 가장 중요합니다.

 

1. URL 요청은 어디서부터 시작될까?

브라우저에서 아래 주소로 요청을 보낸다고 가정해봅니다.

# 요청

http://127.0.0.1:8000/foods/index/

 

"""
이 urls.py는 settings.py의 ROOT_URLCONF에 의해
Django 프로젝트의 기본 URL 설정으로 사용됩니다.

settings.py 예:
ROOT_URLCONF = 'myproject.urls'
"""

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('foods/', include('foods.urls')),  # foods 앱 URL 연결
]

/foods/로 시작하는 요청은 foods.urls 파일로 위임함

 

2. App의 urls.py에서 View를 찾는다

path('foods/', include('foods.urls'))로 위임되기 때문에, foods/urls.py에서는 foods/가 이미 prefix로 붙은 상태에서 그 이후 경로만 비교합니다.

path('index/', views.index)

그래서:

/foods/index/

views.index 함수가 실행됩니다.

 

3. View 함수는 무엇을 하나?

View 함수는 HTTP 요청을 받아서 HTTP 응답을 만드는 역할을 합니다.

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello Django")

이 코드의 의미는 다음과 같습니다.

  • 브라우저로부터 HTTP 요청을 받고
  • HTTP 규격에 맞는 **응답 객체(HttpResponse)**를 생성
  • 응답 내용을 브라우저에 전달

 

4. HttpResponse의 역할

웹 통신은 HTTP라는 규격을 따릅니다.
서버는 이 규격에 맞춰 응답을 보내야 브라우저가 이해할 수 있습니다.

 

HttpResponse는 HTTP 규격에 맞는 응답을 만들어주는 클래스입니다.

  • 상태 코드
  • 헤더
  • 본문(HTML, 문자열 등)

을 포함한 HTTP 응답 객체를 생성합니다.

실제 네트워크 전송은 Django가 아니라
웹 서버(runserver, Nginx 등)가 담당합니다.

 

5. 전체 흐름 요약

URL 요청 → project urls → app urls → view 함수 → HttpResponse → 브라우저

 

 

6. 정리하면

처음 Django를 배울 때는 이 흐름이 잘 보이지 않지만,
한 번 연결되기 시작하면 모든 코드의 역할이 명확해집니다.

  • URL은 길을 안내하고
  • View는 일을 하고
  • HttpResponse는 규격에 맞게 결과를 포장한다

이 관점으로 보면 Django의 구조가 훨씬 선명해집니다.

 

'Django 프론트& 백엔드 개발' 카테고리의 다른 글

ROOT_URLCONF의 역할  (0) 2026.01.03
include()의 개념  (0) 2026.01.03
앱(App) 구조 정리  (0) 2026.01.03
Django 프로젝트 폴더 정리  (1) 2026.01.03
Django 2.2로 첫 프로젝트 실행하기 (WSL + pyenv)  (0) 2026.01.03