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 |