특강

[Django 1일차] 웹 서비스와 Django의 관계 2/4 (250512)

Chansman 2025. 5. 12. 13:31

📚 Django 웹서비스 구조 완전 정리 (클라이언트, 서버, API, HTML, JSON까지)


1️⃣ 웹 서비스와 Django의 관계

✔️ 웹 서비스란?

  • 클라이언트 ↔ 서버 간 데이터 요청 및 응답 구조
  • 모바일도 포함 (예: 토스, 당근마켓 등도 웹서비스)

✔️ Django란?

  • 웹 서비스 제작을 빠르게 할 수 있도록 돕는 Python 기반 웹 프레임워크
  • HTML 응답, JSON 응답 둘 다 가능 → 풀스택 웹 개발 가능

2️⃣ 💻 클라이언트와 서버의 역할 이해하기

구분 역할 설명

클라이언트 사용자 요청을 전달, 응답을 화면에 표시
서버 클라이언트의 요청을 처리, 데이터 연산/저장 후 응답

✅ 사용자의 흐름 구조 (UI & API)

  • UI (User Interface): 사용자가 버튼 클릭 등으로 요청 생성
  • API (Application Programming Interface): 클라이언트 ↔ 서버 간 데이터 전달 규칙

📌 클라이언트와 서버는 고정된 역할이 아니며, 기능에 따라 역할이 바뀔 수 있음


3️⃣ 🎨 프론트엔드 vs 백엔드 개념

용어 정의 설명

프론트엔드 사용자와 직접 마주하는 화면 영역 (HTML/CSS/JS)
백엔드 데이터 처리, 서버 로직, DB 등 비가시적 영역

✔️ 프론트엔드 = 클라이언트, 백엔드 = 서버와 DB 포함
✔️ 프론트엔드와 백엔드는 역할보다는 **위치 개념(앞 vs 뒤)**에서 유래


4️⃣ 🛠 Django의 풀스택 기능 정리

✔️ Django는 웹 전체 흐름을 책임질 수 있음 (풀스택)

  • 서버 처리 + 화면 출력 (HTML 템플릿 렌더링)
  • API 응답 (JSON 형태로도 처리 가능)

💡 HTML 응답 예시 (템플릿 엔진 활용)

<!-- templates/hello.html -->
<h1>Hello, {{ user.username }}!</h1>
# views.py
from django.shortcuts import render

def hello_view(request):
    return render(request, 'hello.html', {'user': request.user})

📌 Django는 HTML을 응답할 수 있으므로 프론트 없이도 UI 구성 가능


5️⃣ 🔄 JSON 응답이 필요한 경우

✔️ HTML 응답이 필요 없고, 데이터만 주고받을 때
✔️ 프론트엔드가 React, Vue 등 외부 프레임워크일 경우

💡 JSON 응답 예시 (Django View)

from django.http import JsonResponse

def user_info(request):
    data = {
        'name': 'Elon Musk',
        'age': 50,
        'balance': 1000000000
    }
    return JsonResponse(data)

📦 JSON 특징

  • 구조: Python 딕셔너리와 유사 (key-value 쌍)
  • 과거에는 XML도 사용됐지만, 요즘은 거의 JSON 사용
  • 클라이언트가 받아서 원하는 위치에 렌더링

6️⃣ ⚙️ Django 프로젝트 셋업 과정

✅ 기본 개발 흐름

  1. 가상환경 생성
python3 -m venv .short_url
  1. 가상환경 활성화
source .short_url/bin/activate
  1. Django 설치
pip install django
  1. 프로젝트 생성
django-admin startproject config .
  1. 서버 실행
python manage.py runserver

🔍 보조 개념: API와 UI 흐름

사용자 동작 전달 주체 전달 대상 설명

버튼 클릭 사용자 클라이언트 UI 인터페이스 이용 요청 생성
요청 전송 클라이언트 서버 API 형식으로 데이터 요청
응답 반환 서버 클라이언트 JSON or HTML 형태 응답 반환
결과 출력 클라이언트 (프론트) 사용자 응답 데이터를 화면에 렌더링

🧠 한 줄 요약

Django는 클라이언트와 서버를 모두 다룰 수 있는 풀스택 웹 프레임워크이며,
HTML 응답과 JSON API 응답 모두 가능하여 다양한 개발 방식에 대응 가능합니다.


💡 실전 팁 정리

  • 작은 프로젝트 → Django 템플릿 활용 (HTML 응답)
  • 큰 프로젝트 → 프론트 분리, Django는 API 서버로 사용
  • JSON 응답 시: JsonResponse 사용, 클라이언트가 직접 UI 렌더링
  • 가상환경은 프로젝트별로 독립 생성하여 패키지 충돌 방지