nullvuild

Bloger @nullvuild

Created Date '2025/03/01 오후 10:35

Modified Date '2025/03/15 오후 02:40

#Django #흐름 #이해
Pasted Image

1. 클라이언트 (Client)

웹 브라우저(Chrome, Firefox 등)에서 사용자가 특정 URL을 입력하거나 버튼을 클릭하여 서버로 요청을 보낸다.


사용자 (브라우저) → 서버로 요청 전송 (예: https://example.com/home)

2. 웹 서버 (Nginx, Apache)

웹 서버(Nginx, Apache)가 요청을 받아서 Django 애플리케이션으로 전달한다.

웹 서버는 정적 파일(이미지, CSS, JavaScript 등)을 제공하거나, 동적 요청을 애플리케이션 서버로 넘긴다.


Nginx / Apache → 요청을 애플리케이션 서버로 전달

3. 애플리케이션 서버 (Gunicorn, uWSGI)

Django는 단독으로 실행되지 않으며, Gunicorn이나 uWSGI 같은 WSGI 서버가 Django 애플리케이션을 실행해 요청을 전달한다.


Gunicorn / uWSGI → Django의 WSGI 엔트리포인트 실행 (wsgi.py)

4. Django URL Dispatcher (urls.py)

Django는 urls.py에서 요청받은 URL을 분석하고, 적절한 View로 연결한다.


from django.urls import path
from . import views

urlpatterns = [
    path('home/', views.home, name='home'),
]

Django URL 매칭 → home/ 요청이 들어오면 views.home 실행

5. View에서 요청 처리 (views.py)

View는 URL과 연결된 함수 또는 클래스이며, 모델과 템플릿을 호출해 응답을 생성한다.


from django.shortcuts import render
from .models import Post

def home(request):
    posts = Post.objects.all()  # 모델에서 데이터 조회
    return render(request, 'home.html', {'posts': posts})  # 템플릿에 데이터 전달

View 실행 → Model에서 데이터 조회 → Template에 데이터 전달

6. Model에서 데이터베이스와 상호작용 (models.py)

Django ORM을 사용하여 데이터베이스에서 데이터를 가져오거나 저장할 수 있다.


from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()

Model → 데이터베이스에서 데이터를 가져옴

7. 템플릿 (Templates)에서 HTML 생성

Django의 템플릿 엔진은 데이터를 받아 HTML을 생성하고, 이를 클라이언트에게 반환한다.


<!DOCTYPE html>
<html>
<head>
    <title>홈</title>
</head>
<body>
    <h1>게시글 목록</h1>
    {% for post in posts %}
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
    {% endfor %}
</body>
</html>

Template → View에서 전달받은 데이터를 이용해 HTML 생성

8. 클라이언트에게 응답 반환

생성된 HTML 응답이 Django를 통해 애플리케이션 서버(Gunicorn, uWSGI) → 웹 서버(Nginx, Apache) → 클라이언트(브라우저)로 전달된다.


템플릿에서 HTML 렌더링 → 사용자 브라우저로 전송 → 화면 표시
Nullvuild

Nullvuild

@nullvuild

프로필