백엔드 개발을 위해 스택을 찾던 중, 파이썬 기반인 장고를 알게 되었다.
장고는 spring 처럼 MVC 패턴이 아니라 MVT패턴이였다.
<MVC 패턴>
Model - 앱을 구성하는 데이터를 담당
View - 유저에게 데이터를 보여주는 방식을 담당
Controller - 유저의 입력을 처리하는 상호작용 로직을 담당
세 가지 구획으로 웹 애플리케이션의 기능을 분류.
<Django의 MVT 패턴>
Model - 앱을 구성하는 데이터를 담당(같음)
View - controller의 기능
Template - view의 기능
🎬 django 웹 서비스 기본 시나리오
1. 유저(클라이언트/웹브라우저)가 서버로 HTTP 요청 전송
2. 이를 django의 URL dispatcher가 받아 담당 View function으로 routing
3. View function은 사전 정의된 로직에 따라 들어온 요청을 처리
4. 그 과정에서 Model의 애플리케이션 데이터를 create/read/update/delete
5. 요청 처리 결과를 Template에 담아 render
6. render된 결과를 HTTP 응답의 형태로 View가 반환. 이를 유저에게 다시 제공.
Django 웹 프레임워크에서 제공하는 데이터베이스와의 상호작용을 위한 도구입니다. ORM을 사용하면 SQL 쿼리를 직접 작성하지 않고도 Python 코드로 데이터베이스 작업을 수행할 수 있습니다. Django ORM은 데이터베이스 모델을 Python 클래스와 매핑하여, 데이터베이스의 테이블과 레코드를 객체로 다룰 수 있게 해줍니다.
| 필터링 옵션 | 설명 |
|---|---|
| __exact | 필드값이 정확히 일치하는 경우 |
| __iexact | 대소문자 구분없이 정확하게 일치하는 경우 |
| __contains | 필드 값이 특정 문자열을 포함하는 경우 |
| __icontains | 대소문자 구분없이 포함하는 경우 |
| __gt | 필드 값이 주어진 값보다 큰 경우 |
| __gte | 필드 값이 주어진 값보다 크거나 같은 경우 |
| __lt | 필드 값이 주어진 값보다 작은 경우 |
| __lte | 필드 값이 주어진 값보다 작거나 같은 경우 |
| __in | 필드 값이 주어진 리스트 포함되는 경우 |
| __isnull | 필드 값이 Null인 경우 |
| __range | 필드 값이 주어진 범위 내에 있는 경우 |