특징

1. MVT 패턴을 사용한다.

MVC모델이랑 사실상 동일하다고 생각하면 됨

View -> Templage / Controller -> View로 표현한다.

Model :  DB에 저장되는 데이터
Template는 유저에게 보여지는 UI
View는 데이터를 처리하고 Template에 데이터를 전달

 

2. 강력한 ORM 기능 지원

ORM(Obect Relational Mapping, 객체관게 매핑)을 통해 객체와 RDBMS를 연결해준다.

따로 SQL문을 만들지 않고, 생성한 클래스(객체)를 바로 DB와 연동할 수 있습니다.

 

3. 소스코드의 변경 사항을 자동으로반영합니다.

장고는 자동으로 ..py파일의 변동을 감지하고 자동으로 반영해줍니다. 그래서 코드를 변경할때마다 수동으로 웹 서버를 재실행할 피료가 없습니다.

 

Flask와 비교

Flask는 Micro Framework를 철학으로 만들어진 프레임워크라서 "웹개발을 위한 최소한의 기능만 지원"합니다.

반대로 장고는 웹개발을 위한 거의 모든 기능을 지원합니다. 다만, 프레임워크가 제시하는 틀에서 벗어날 수 없는 단점이 있죠

 

쉽게 설명하면 Flask는 레고 / Django는 프라모델이라 생각하면 됩니다.

 

장단점

장점

1. 파이썬을 기반으로 한 만큼 진입장벽이 낮은 편이다.

2. 생산성이 높고 개발 비용을 꽤 절감시킬 수 있다.

3. URL디자인이 매우 편리하다.(정규표현식 사용 가능, 함수와 URL을 1:1 매칭 가능)

4. 파이썬 기반의 머신러닝, 데이터 분석 라이브러리와 융합하여 사용하기 편하다.

5. 출시된지 오랜 시간이 흘렀고, Instagram처럼 성공적으로 도입된 사례가 많은 만큼 안정성과 기능이 충분히 검증되었다.

6. 커뮤니티 활동이 활발하고, 관련 문서(자료)가 많다.

단점

1. 파이썬을 기반으로 한 만큼 파이썬의 단점이 전부 포함된다.

2. 다른 웹 프레임워크에 비해 비교적 속도가 느리다.

3. 숙련되기 위해선 장고 자체에 대한 이해도 뿐만 아니라 파이썬에 대해서도 높은 이해도를 요구한다.

4. 관련 문서도 많고 커뮤니티 활동도 활발한데.. 대부분 한글화가 안되어있다..

 

 

장고를 사용하는 사이트

  • 인스타그램
  • NASA
  • 비버켓
  • Disqus
  • 모질라

 

구동방식

초록색이 Django

URL Dispactcher을 통해 URL을 분석하고 적합한 View로 전달한 후 View는 Model을 통해 데이터를 받아오고 View에게 주면서 View는 Template를 통해 유저에게 response를 넘긴다.

 

좀 더 자세한 사진

  • WSGI(Web server gateway interface) : 장고와 웹서버를 연결해주는 역할. 웹서버(Nginx)로부터 서버사이드 요청을 받으면 WSGI를 통해 장고로 전달하는 역할을 수행한다.
  • URL Resoluion: 정규표현식으로 구성. 그에 맞는 특정한 View로 전달
  • VIEW : URL을 통해 받은 사용자 request에 따른 데이터의 처리를 결정하고, MODEL에 신호를 보냄. 또한, MODEL에서 받은 정보를 가공하기도 함. 웹페이지나 콘텐츠들은 VIEW를 통해 전달되며, 파이썬의 function(method)으로 나타난다.
  • MODEL : DB에서 데이터를 가지고 오고, 그 데이터를 각각의 클래스에 넣는다.(변수 지정). SETTING이외 부가적인 메타데이터를 가진 데이터베이스의 구조(layout).
  • TEMPLATE : UI작업이 이루어지는곳으로, VIEW에서 받은 정보를 HTML등으로 가공하는 로직이 들어가 있다. 3세대 부터는 프론트엔드 개발자가 담당.
  • FORM : model, template에 있는 UI관리 (?)

추가내용

장고의 manage.py runserver 명령어는 단일 쓰레드로 작동하여 테스트 용도로써는 적합하나, request요청이 많아질 경우 처리 능력이 떨어지므로, production 환경에는 적합하지 않다.

따라서, 배포시에는 이를 대체할 Gunicorn 과 같은 프로그램을 사용하는게 적합하다.

 

 

Runserver의 비밀

  • runserver뒤에는 IP주소와 포트번호가 숨겨져 있다-포트(Port): IP로 찾은 컴퓨터 내부에서 실행되고 있는 프로그램이나 서비스를 구분하는 값 → IP로 컴퓨터를 찾고 그 안에서 포트를 가지고 프로그램을 찾는 것임
  • 아이피 주소(IP Address): Internet Protocol의 앞 글자를 딴 것으로 네트워크 상에서 다른 컴퓨터와 내 컴퓨터를 구별하는 일종의 주소
  • 개발서버(runserver)는 확인용이므로 배포시에는 웹서버를 따로 사용해야 한다

 

파일구조

 

참고 : 

https://tibetsandfox.tistory.com/6

https://velog.io/@rosewwross/Django%EB%9E%80-sck638v59x

https://velog.io/@ally0526/2.-django-%EA%B5%AC%EC%A1%B0-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

'개발합시다. > BackEnd 공부' 카테고리의 다른 글

mongoDB의 모든 것  (0) 2021.12.07
Nginx의 모든 것  (0) 2021.12.07
Django 기초 정리  (0) 2021.12.06
네트워크 관련 면접 질문 정리 ①  (0) 2021.10.06
데이터베이스 관련 면접 질문 정리 ②  (0) 2021.09.30

+ Recent posts