django_시작

강현구·2021년 12월 12일
0

Django

목록 보기
1/12

Django

python 기반의 오픈소스 웹 프레임워크로 MVT패턴을 갖고 있다.
ORM을 기본으로 제공하기 때문에 DB를 다루는데 있어서도 편리하다. django의 가장 큰 장점 중 하나가 바로 이 ORM이다.
django를 본격적으로 시작하기에 앞서 웹의 발전을 되짚어 보고, backend eng'r의 로드맵을 그려본다.

웹 시스템

초기의 웹 시스템 - 정적인 웹

1st gen

2세대 웹 서비스 - 동적인 웹

2nd gen

3세대 웹 서비스 - SPA. Frontend/Backend의 구별

3nd gen

Modern WEB - 현대 웹 시스템의 구조,아키텍쳐

modern

Backend Dev. Roadmap

roadmap of back eng'r

Backend API 개발

API : (Application Programming Interface)
코드로 된 약속을 만드는 것으로 프론트/백간의 데이터를 주고받는 창구이다.
API개발을 위한 도구로는 Flask(python),Express(Nde.js),spring(JAVA) 등이 있으나,
python을 기반으로한 장고로 backend 개발을 시작한다.
왜 Spring을 많이 쓰지?_제로벨...님의 블로그

Web client <-> Web application Server <-> Databse
프론트엔드에서의 데이터 요청에 대해 백엔드는 필요한 정보를 데이터베이스로 요청을 하고 응답을 돌려받는다. 이 정보를 백엔드에서 재가공하여 프론트로 전달한다.
client와 application server는 http로 통신을 하고 application에서 client로 데이터를 전달할 때 JSON 타입의 데이터를 전달한다.
BACK API

그러면 Django는?


django는 여기서 Web Application Server를 만들기위한 프레임워크이다.
django는 MVT패턴으로 구성되어 있다. (MVC 형태가 많지만 크게 다르지않다)

MVT
M : Model ; 데이터베이스와 관련된 코드가 들어간다.
V : View ; 모델로부터 받은 데이터로 로직을 구현한다.
T : Template ; View에서 받은 데이터를 html로 화면에 구성한다.
MVT 패턴

MCV
M : Model ; controller에서 요청하는 데이터를 보내준다.
C : Controller ; user는 controller로 event나 input을 조작한다.
V : View ; controller에서 가공한 데이터를 받아서 유저에게 보여준다.
MCV 패턴

여기서 알 수 있듯이 특이하게 django는 프론트엔드의 역할을 포함하고 있는데, django는 3세대의 F/B가 분리된 환경에서 만들어진 프레임이 아닌 2세대 환경에서 만들어졌기 때문이다. 그래서 django는 기본적으로 full stack 프레임워크의 형태를 가진다.
Backend 역할만 할 경우에는 Model, View까지만 만들어서 가공된 데이터를 Front로 전달하면 된다.

웹 서버(API)를 구성할 때, 초창기에는 다양한 기능을 하는 코드가 한 파일에 전부 들어있었다. 이러한 형태는 협업을 할때나 유지보수 관리를 할때도 상당한 불편함이 따랐다. 각각의 기능별로 파일을 개별적으로 구성하기 시작했고 지금의 형태에 도달한다.
django에서는 패키지로 구성된 각각의 기능을 담당하는 app들을 만들고 이 패키지 내에서 model과 view파일(모듈)을 구성하여 이 코드들을 서로 연결해가며 서버를 구성한다.(패키지,모듈의 import)

유저가 클라이언트를 통해서 데이터를 요청하거나 입력하는 경우(어떤 액션이 발생하면)에 이것이 django 서버로 들어온다. 이 요청은 URLconf(URL Dispatcher)를 통해 분석된다. 분석한 URL에 적합한 View로 요청 내용을 보낸다. View는 요청 내용을 분석해서 어느 DB에 접근하고, 어떤 데이터를 써야할지 알아내고 이에 필요한 데이터들은 Model을 통해 DB에 접근해서 데이터를 가져오게된다. DB를 통해 데이터를 받은 Model은 이를 가공해서 View로 보내고 View는 최종적으로 template으로 이 데이터를 보내 유저에게 화면을 보여주게 된다.

  • django work flow

Model에서 접근하는 Database는 여러가지가 다 호환가능하지만, 기본적으로는 sqlite가 셋팅되어 있으며, 미리 설치해둔 mySQL을 사용하기 위해서는 Setting파일의 DATABASES부분을 수정하면 된다.
이러한 사이클을 갖는 각각의 APP들은 database와 동일하게 Setting파일에서 설정해줘야한다. INSTALLED_APPS(필요에 따라MIDDLEWARE)부분에 수정을 해주고, 수정이 완료되면 DB를 migrate해서 DB도 업데이트 해주자.(migration참고)

django의 전체파일 flow는 아래 그림과 같다.

  • web client ~ database까지의 전체적인 흐름

  • Model은 database에 ORM으로 data를 통신한다.

  • Django로 들어온 요청은 Urlconf로 요청을 분류하고 view에서 분석,처리 한다

profile
한걸음씩

0개의 댓글