Django는 웹 서비스를 위한 파이썬 기반의 백엔드 프레임워크이다. 데이터를 저장하는 DB와 웹에 직접적으로 노출되는 Template, 그리고 그 사이의 로직을 담당하는 View 등으로 역할이 분할되어 있다. 과거 하나의 스크립트 안에서 모든 것들이 구현되었으나, 기술의 발전과 함께 보다 다양한 기능들이 생겼다. 동시에 그 모든 것들을 단 하나의 스크립트 안에서 모두 구현해내는 것이 매우 복잡해졌다. 이에 따라 각각 기능 별로 분할하여 코드를 작성하고 합치는 방식으로 변화하였다.
Django를 통해 데이터가 사용자에게 노출되기까지 어떠한 순서 혹은 구조로 진행되는지를 파악할 필요가 있다.
아래의 그림은 django의 구조적인 패턴인 mvt 패턴을 요약한 것이다.
이미지출처
MVT 패턴은 기존의 MVC 패턴과 비교된다.
MVC 는 Model/View/Control 을 각각 의미하며, 역할은 다음과 같다.
MVT는 MVC에서 약간 변형된 django에서 통용되는 패턴이다.
뭐 대략 이런 process 다. 번역하는 과정에서 어색해졌다. 참고자료의 원문을 보는게 낫겠다. Django가 많이 쓰이는 이유는 CRUD 에 매우 유용한 프레임워크이기 때문이다.
CRUD : Create / Read / Update / Delete
일반적인 웹 서비스에서 필수적으로 구현되는 기능들이다. Instagram, 각종 블로그 등이 이에 해당한다. 이 다음부터는 Django의 여러 기능들을 직접 구현해보면서 파악하겠다.
Django 가 많이 쓰이는 이유 중에 또하나가 바로 ORM이다.
ORM : Object Relational Mapping - 파이썬 객체와 관계형 DB의 데이터를 자동으로 매핑시켜주는 것
관계형 데이터베이스(RDB)는 SQL(Structured Query Language)이라는 언어를 사용해서 해당 데이터에 접근하고 추출한다. 그렇기 때문에 sql을 사용할 줄 알아야 한다. 하지만 django에서는 파이썬으로 작성한 코드를 번역(?) 하여 sql로 변환하고 해당 조건에 맞는 데이터를 추출할 수 있도록 도와준다. 이게 ORM이다.
파이썬 하나만 해도 빡센 상황에 sql 을 또 해야한다는 부담감을 줄여주는 고마운 기능이라고 볼 수 있다.
# python
User.objects.filter(age=30).order_by('created_date')
# sql
select * from users where age = 30 order by created_date
https://www.theturninggear.com/2018/10/22/djangos-architectural-pattern/