Django 프레임워크

Gom La·2023년 3월 27일
0

장고와 친해지기

목록 보기
1/17
post-thumbnail

🔖 Django

사용하는 Django 버전-v3.1이상
: Django가 3.0이상부터 async지원하기 때문에

사용하는 Python` 버전-v3.8이상
: Python이 3.7이하부터 관리대상에서 제외되기 때문에

➤ Django를 사용하는 이유

  • Batteries Included
    : 개발자들이 개발하고 싶은 모든 것들이 들어가있으며 커뮤니티가 방대하기 때문에 필요한 모든 것들을 수급할 수 있다.
  • 안전하다
    : 초보 개발자에게 안전은 다루기 어려운 부분이기 때문에 보안문제에 대해서 built-in으로 도움을 주고있다.
    (유저의 계정과 비밀번호를 안전하게 보관, 세션관리, SQL Insection 방비 등)
  • Shared-nothing Architecture
    : 독립적이어서 레이어를 언제든지 바꿀 수 있다.
  • 다양한 사용이 가능
  • Very Maintainable
    : 디자인원칙과 패턴(MVT)을 사용해서 개발을 진행하기 때문에 매우 유지보수가 쉽다.

🧑🏻‍💻 Pinterest, Bitbucket, Udemy, Disqus, Washington Post, NASA, Youtube, Toss, Delivery Hero Korea, 숨고 등의 기업에서 사용하고 있으므로 굉장히 많이 사용되고 있다고 볼 수 있다.

➤ Django의 장점

1.최소기능제품(MVP: Minimum Viable Product) 제작을 위해 곧바로 사용 가능

  • Django는 개발 프로세스의 속도를 높여줌으로써 개발자를 도와준다.
  • 데이터베이스의 접근, 세션, 라우팅, 다국어 지원 등을 다루는 자체적인 객체관계매핑(Object Relation Mapping, ORM)계층이 포함
  • 요청을 처리하는 동안 보안을 관리
  • 모델을 관리하기 위한 Django-admin장고 관리자를 지원

Tip! ORM 이란?
ORM은 Object Relational Mapping, 객체! 관계! 매핑!의 줄임말이다. 객체관계매핑은 OOP(Object Oriented Programming)에서 사용되는 개체라는 개념을 클래스RDB에서 쓰이는 테이블을 자동으로 매핑하는 것을 의미한다.

그러나 클래스와 테이블은 서로가 호환성을 두고 만들어진 것이 아니기 때문에 불일치가 발생할 수 있는데, 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결하는 것을 말한다.

따라서 ORM을 이용하면 따로 SQL문을 작성할 필요 없이 객체를 통해 데이터베이스에 간접적으로 조작할 수 있게 된다.

2. 보안

  • 장고에는 사이트 간 요청 위조(Cross-site request forgery, CSRF)SQL Insection과 같은 형태의 공격을 방지하는 기능이 포함되어 있다.

3. 내부 파이썬

  • 파이썬의 선이라는 규칙을 따르고 있기 때문에, 장고에서는 모든 것이 명시적이다.
  • 파이썬의 선에서는 암시적인 것보다는 언제나 명시적인 것이 낫다고 말하고 있다.
    - 장고에서는 사용자가 먼저 환경설정을 해야한다.
    - 장고는 외부 라이브러리에 대한 뛰어난 지원과 프로그래머의 생산성을 향상시키는 것과 같은 파이썬의 모든 장점을 계승하고 있다.

➤ Django의 단점

1. 속도

  • 파이썬 자체는 속도가 빠른 언어가 아니기 때문에 아키텍처를 잘못 설계하면 웹사이트의 속도가 상당히 느려질 수 있다.(항상 최적화가 되어 있는지 확인이 필요함)

2. 관습의 결핍

  • Django에서는 모든 것을 명시적으로 규정해야한다.
  • 환경설정과 관련한 문서를 별도로 만들어야 하며, 이는 개발 프로세스의 속도를 늦출 수 있음

3. 장고가 언제나 최선의 선택이 아닐 수 있음

  • 한 페이지 분량의 정적인 페이지나 마이크로서비스처럼 아주 규모가 작은 사이트에서는 장고가 최선의 선택이 아닐 수 있음
  • 이 경우 오히려 Flask를 추천함

🔖 프레임워크 VS 라이브러리

프레임워크
내코드 > Django > Serving
프레임워크인 Django가 내코드를 읽어 Serving을 해준다.

라이브러리
라이브러리 > 내 코드 > Serving
내코드가 라이브러리를 가져와서 읽고 Serving을 해준다.

Serving이란 서비스를 제공, 또는 흐름을 이끄는 뜻으로 알면 되겠다.


Django의 구조

➤ 아키텍쳐 Flow

  1. Users, Other Services가 Web Server에 요청
  2. Web Server가 전달받은 요청을 구분하여 URLs.py에 전달(유효한 url인지 확인)
  3. URLs.py에서 Views로 전달하는데 여기서 어떤 일을 철리해야 하는지 판단한다.(Databases에 입출력이 존재하는지)
  4. Databases에 입출력이 존재한다면 Models으로 와서 입출력을 진행
  5. 만약 Rendering이 필요하면 Templates에서 코드를 가져와 HTML로 변환
  6. 마지막으로 Web Server로 다시 전달 후 Users, Other Services에 요청한 결과 값을 보여준다.

➤ MVT 패턴

위의 이미지에서 Models, Views, Templates(MVT)를 가지는 3개가 메인이 된다.

➤ Middle ware

URLs.py에서 유효한 url이 존재하면 Views로 넘어가게 되는데 이 과정은 중간에 Middle ware를 타고 넘어가게 된다.

  • 인증
  • Logging
  • Traffic

등을 관리할 수 있다.

profile
인생 개발자 라곰!!

0개의 댓글