티스토리 뷰
2025.07.14 - [웹 프로그래밍] - [1] 웹 프로그래밍의 이해
[1] 웹 프로그래밍의 이해
웹 프로그래밍은 HTTP(S) 프로토콜로 통신하는 클라이언트와 서버를 개발하는 일입니다. 쉬운 예시로, 웹 브라우저를 실행하여 네이버에 접속할 때도 웹 프로그램이 동작합니다. 이 경우, 웹 클라
up-one-coding.tistory.com
Djanog은 대표적으로 구글의 웹 애플리케이션 엔지에 사용되면서 많은 사람이 사용하게 되었고 현재는 파이썬을 대표하는 웹 프레엠워크로 자리매김하고 있습니다. 이번에는 Django 프레임워크의 특징에 대해 알아보겠습니다.
1. MVT 패턴
Django의 MVT 패턴은 Model, View, Template 각 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식입니다. 기존 웹 프로그래밍 시 언급되는 MVC(Model, View, Controller)에서 View을 Template, Controller를 View로 표현하는 것이 MVT 패턴입니다.

① Model - DB 정의
Model은 사용될 데이터에 대한 정의를 담고 있는 클래스입니다. 기존의 웹 프로그래밍에서 데이터베이스에 접근하려면 직접 SQL 언어를 사용해 데이터를 요청해야 했습니다. 하지만, Django에서는 ORM 기법을 바탕으로 애플리케이션에서 사용할 데이터베이스를 클래스로 매핑하여 코딩할 수 있습니다.
ORM 기법은 데이터베이스 대신 객체를 사용해 데이터를 처리합니다. 이러한 방법은 데이터베이스로의 액세스를 SQL 없이도 클래스를 다루는 것처럼 유용하고, 필요에 따라 데이터베이스 엔진(SQLite3, PostgreSQL 등)을 쉽게 변경할 수 있습니다. Djanogo은 테이블을 모델 클래스로 정의하고 이를 실제 데이터베이스에 반영한 후에도 테이블에 데이터를 입력하고 입력된 데이터를 확인 및 변경할 수 있는 기능을 가지고 있습니다.
# Person 모델 클래스 정의
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
second_name = models.CharField(max_length=50)
# Django 내부의 SQL 명령으로 자동으로 데이터베이스 테이블을 생성
② URL conf - URL 정의
클라이언트로부터 요청을 받으면 Django는 가장 먼저 요청에 들어있는 URL을 분석합니다. 개발자가 사전에 URL과 처리 함수를 매핑하는 코드를 작성하여 이뤄진 URL / View 매핑을 URL conf라고 합니다. URL conf의 장점은 URL과 뷰 함수 이름이 자주 수정되어도 URL conf에서 매핑한 부분만 수정하면 되므로 변경이 쉽다는 것입니다.
주요 원리는 웹 클라이언트가 웹 서버에 페이지를 요청할 때 Django에서 URL을 분석하는 것입니다. 특정 패턴으로 정의된 URL에서 매칭이 되면 매칭된 URL의 뷰를 호출하는 것입니다.
③ View - 로직 정의
View는 웹 요청을 받아서 데이터베이스 접속 등 해당 애플리케이션의 로직에 맞는 처리를 하고 그 결과 데이터를 HTML로 변환하기 위해 템플릿 처리를 한 후 최종 HTML로 된 응답 데이터를 웹 클라이언트로 변환합니다.
# 현재 날짜와 시간을 html로 반환하는 view
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
즉, View는 템플릿 파일을 해석해서 HTML 코드를 생성하고 이를 HttpResponse 객체에 담아서 클라이언트에 응답합니다.
④ Template - UI 정의
Django가 클라이언트에게 반환하는 최종 응답은 html 텍스트입니다. 클라이언트는 응답으로 받은 html 텍스트를 해석해서 우리가 보는 웹 브라우저 화면에 UI로 반환합니다. Django의 장점은 자체 템플릿 엔진을 가지고 있기 때문에 디자이너도 쉽게 이해할 수 있는 문법을 제공합니다. 화면 디자인을 변경할 일이 있으면 개발자는 프로그램 로직에 상관없이 문법에 맞게 템플릿만 수정하면 되므로 협업이 편리합니다.
⑤ 프로젝트 작업 순서
- 프로젝트 뼈대 만들기 : 프로그래밍에 필요한 디렉터리와 파일 생성
- 모델 코딩하기 : 테이블 관련 사항 프로그래밍
- URL conf 코딩하기 : URL 및 뷰 매핑 관계 정의
- 템플릿 : 화면 UI 생성
- 뷰 : 애플리케이션 로직 구현
'웹 프로그래밍' 카테고리의 다른 글
| [1] 웹 프로그래밍의 이해 (0) | 2025.07.14 |
|---|
- 머신러닝 #xgboost #
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- #with recursive #입양시각 구하기(2) #mysql
- python #프로그래머스 #겹치는선분의길이
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- 머신러닝 #lightgbm #goss #ebf
- #polars #대용량 데이터셋 처리
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- #seq2seq #encoder #decoder #teacher forcing
- #프로그래머스 #안전지대 #시뮬레이션
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- #웹 프로그래밍 #서버 #클라이언트 #http #was
- #docker #container #docker command
- # 프로그래머스 #연속된 부분수열의 합 #이중 포인터 #누적합
- 머신러닝 #project #classification #dacon
- #django #mvt 패턴
- # 할인행사 #counter #딕셔너리 #프로그래머스
- #attention #deeplearning
- # 프로그래머스 # 카펫 # 완전탐색
- #docker #image #build #dockerfile
- 잘라서 배열로 저장하기 #2차원으로 만들기
- nlp #토큰화 #nltk #konply
- #opencv #이미지 연산 #합성
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- #docker #docker compose
- #tf idf
- #자연어 처리 #정수 인코딩 #빈도 수 기반