📚 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 프로젝트 셋업 과정
✅ 기본 개발 흐름
- 가상환경 생성
python3 -m venv .short_url
- 가상환경 활성화
source .short_url/bin/activate
- Django 설치
pip install django
- 프로젝트 생성
django-admin startproject config .
- 서버 실행
python manage.py runserver
🔍 보조 개념: API와 UI 흐름
사용자 동작 전달 주체 전달 대상 설명
버튼 클릭 | 사용자 | 클라이언트 | UI 인터페이스 이용 요청 생성 |
요청 전송 | 클라이언트 | 서버 | API 형식으로 데이터 요청 |
응답 반환 | 서버 | 클라이언트 | JSON or HTML 형태 응답 반환 |
결과 출력 | 클라이언트 (프론트) | 사용자 | 응답 데이터를 화면에 렌더링 |
🧠 한 줄 요약
Django는 클라이언트와 서버를 모두 다룰 수 있는 풀스택 웹 프레임워크이며,
HTML 응답과 JSON API 응답 모두 가능하여 다양한 개발 방식에 대응 가능합니다.
💡 실전 팁 정리
- 작은 프로젝트 → Django 템플릿 활용 (HTML 응답)
- 큰 프로젝트 → 프론트 분리, Django는 API 서버로 사용
- JSON 응답 시: JsonResponse 사용, 클라이언트가 직접 UI 렌더링
- 가상환경은 프로젝트별로 독립 생성하여 패키지 충돌 방지
'특강' 카테고리의 다른 글
[Django 1일차] 커스텀 유저 모델 구축 및 회원 시스템 설계 4/4 (250512) (0) | 2025.05.12 |
---|---|
[Django 1일차] 프로젝트 세팅 튜토리얼 정리 3/4 (250512) (0) | 2025.05.12 |
[Django 1일차] 웹사이트 구조부터 추상화까지 완전 정리 1/4 (250512) (0) | 2025.05.12 |
3-4 Flask 의 유효성 검증과 세션 관리(secret,flash,email-validator,flask-mail) with 파머 (0) | 2025.04.23 |
3-3 Flask 웹 애플리케이션에서 for 문 활용하기 with 파머 (0) | 2025.04.23 |