[Django] Django란 무엇일까??

최진욱·2024년 10월 20일

Django

목록 보기
1/2
post-thumbnail

📌 Django란?

Django는 파이썬 기반으로 만들어진 Web Framework이다. Django를 통하여 웹 애플리케이션을 만들 수 있다.

📌 장고를 배우기로 결심한 이유

코딩 3개월차 2포대 8년차 개발자 아저씨에게 질문을 파이썬을 배운 내가 뭘 할 수 있냐고 물어봤다.

장고로 게시판 만들어보세요😁 (사실 이게 전부임)

📌 왜 장고가 좋은가?

  1. 오픈소스이며 파이썬 기반의 웹 프레임워크이다. 이는 파이썬에 강점이 있다면 큰 장점이 될 수 있다
  1. 빠른 개발속도 (이는 추후 해커톤에 참여할 때 큰 강점이 될 것 같아 공부하기로 결심했다)
  1. 다양한 기능들이 있다
    administration (관리자)
    Authentication
    DB intigration
    Security

  2. 스케일어블하고 많은 대기업들이 초반 빌드에 사용했다

  3. 파이썬의 인기가 높아지고 있다

📌 프로젝트와 앱의 차이점

  • 프로젝트: 하나의 웹에플리케이션이며 URL라우팅, DB설정 등을 관리한다.
  • 앱: 특정기능이나 서비스를 담당한다.

결론적으로 프로젝트는 웹 애플리케이션을 구정하는 앱의 집합이고 앱은 웹 애플리케이션의 특정 기능을 담당하는 단위이다

📌 MVT (Django) vs MVC (Spring Boot)

MVC는 Model View Controller으로 구성된 아키텍쳐이다

👉 Model: 데이터와 비즈니스 로직을 관리하는 부분으로, 데이터베이스와의 상호작용을 담당한다.
👉 View: 사용자에게 보여지는 html파일이다.
👉 Controller: 클라이언트에게 요청받은 로직을 처리하는 역할을 한다.

MVT는 Model View Template으로 구성된 아키텍쳐이다

👉 Model: 데이터와 비즈니스 로직을 관리하는 부분으로, 데이터베이스와의 상호작용을 담당한다.
👉 View: 클라이언트에게 요청받은 로직을 처리하는 역할을 한다.
👉 Template: 사용자에게 보여지는 html파일이다.

결론적으로 Template는 mvc의 view와 같은 역할이고 view는 Controller과 같은 역할을 한다

📌 Djnago의 라이프사이클 (작동 흐름)

장고의 라이프 사이클은 아래와 같다

client -> web server (Nginx or Apache) -> WSGI -> request -> URL ROUTER (urls.py) -> VIEWS (views.py) -> CONTEXT PROCESSOR -> TEMPLATE (html 파일) -> TEMPLATE TAG (장고 템플릿의 태그들) -> ORM -> DB

  1. 먼저 클라이언트가 어떤 요청을 하면 웹 서버가 클라이언트의 요청을 받아 WSGI에 전달한다.

  2. WSGI은 전달받은 요청을 Django 애플리케이션에 전달한다.

  3. 요청받은 url에 맞는 url을 찾아 적절한 view의 함수 혹은 클래스를 찾는다.

  4. view에서 요청받은 로직을 수행한다 그리고 그 로직을 통해 데이터를 처리한다 (물론 view에서 직접 ORM으로 DB에 접근도 가능하다).

  5. 또 view에서 넘겨줘야하는 데이터가 필요하면 context 문법을 통해.
    CONTEXT PROCESSOR가 이를 template로 넘겨준다.

  6. template의 태그 문법들이 orm을 통해 db와 상호작용하여 동적인 HTML 페이지를 생성한다.

  7. 이렇게 생성된 화면이 다시 WSGI을 통해 web server로 돌아가고 client에게 랜더링 된다.
    여기서 WSGI란 Python Web Application (Django) 과 Web Server 사이의 서로 상호작용을 하기 위한 표준 인터페이스이다. WSGI의 구성요소에는 애플리케이션 객체, 서버, 환경변수가 있다.

📌 정리

장고는 다른 프레임 워크에 비해 빠른 빌드가 가능한 프레임워크이다. 다양한 기능을 갖추고 있으며 파이썬 기반에 맞게 문법 또한 간결하다 나중에 나오겠지만 제네릭을 이용하면 다른 프레임워크에 비해 crud를 구현하기 위한 코드가 몇배는 더 간결한 걸 알 수 있다. 또 해커톤에서는 빠른 빌드를 위해 장고를 자주 사용한다고 하며 이를 위해 게시판 만들기 이상으로 공부하려 한다.

Django 사진출처
MVT 사진출처
Django 라이프 사이클 사진 출처

전체 강의 출처

0개의 댓글