Django 질의 응답
- Django 란?
- 파이썬이라는 개발언어에서 웹을 개발하기 위해 만들어진 프레임워크이다.
[프레임워크 란?]
프레임워크는 프로그래밍언어에서 복잡한 기능을 수행하기 위해 만들어진 틀이며, 다양한 기능을 구현하기 위해 사용합니다
[프레임워크와 라이브러리 차이점?]
프레임워크와 라이브러리의 차이 라이브러리는 어플리케이션의 흐름을 사용자가 직접 제어하지만 프레임워크는 흐름을 제공해준다.
- 백엔드 스택 | Django
- Django는 템플릿부터 데이터베이스까지 웹을 구현하는데 필요한 기본적인 기능을 전부 제공하는 프레임워크이고, 쉽고 빠르게 구현이 가능하다
- Python 기반 웹프레임워크이기 때문에 파이썬에서 가능한 모든 동작들이 가능하며, 다양한 라이브러리가 있다.
- 웹 사이트 로그인, 회원가입, 인증, CORS 등 라이브러리를 이용해 반복적으로 구현해야 하는 부분들은 이미 만들어져 있어 편리하게 개발이 가능하다.
- 웹 개발시 프론트와 관련된 프레임워크(React, Vue, angular)를 사용하지 않고 Django Template Language를 이용하여 개발이 가능하다.
- 데이터 베이스 테이블을 models.py에 클래스로 작성하기 때문에 DB 설계가 간단하다.
- admin 기능을 제공하고 장고 ORM을 이용해 DB를 조작한다.
👉 위와 같은 기능들로 인해 개발시간이 크게 단축된다.
+) python의 장점
- 사용이 쉽다.
- 개발 속도가 빠르다(생산성이 높음.쉽고 간결한 문법).
- 높은 확장성 및 이식성(다른 언어나 라이브러리에 쉽게 접근하고 연동 가능)
[특징]
- 스크립트 언어 - 컴파일 과정 없이 인터프리터에 의해 실행 결과를 바로 확인하고 수정하며 코드를 작성할 수 있다.
- 동적 타입 언어 - 변수의 자료형을 지정하지 않고 선언하는 것만으로도 값을 지정할 수 있다.
- 플랫폼 독립적 언어 - 대부분의 운영체제에서 컴파일이 필요없이 어떤 환경에서도 활용 가능하다.
- Django vs Flask
상대적으로 Flask는 접근성이 좋고 빠르게 구현할 수 있지만, 웹에 필요한 다양한 기능을 전부 구현하기 위해서는 많은 라이브러리를 가져와야 하기 때문에 숙련도를 요구하게 됩니다.
- Django의 프로세스
- 클라이언트로 부터 요청(Request)를 받으면 URLconf 모듈을 이용하여 URL을 분석한다.
- URL 분석 결과를 통해 해당 URL에 매칭되는 View를 실행한다.
- View는 자신의 로직을 실행하고, 데이터베이스 처리가 필요하면 Model을 통해 처리하고 그결과를 반환 받는다.
- View는 자신의 로직 처리가 끝나면 Template을 사용하여 클라이언트에 전송할 HTML 파일을 생성한다.
- View는 최종 결과로 HTML 파일을 클라이언트에게 보내 응답(Response)한다.
- Django | MTV 패턴
- M(Model) - 데이터베이스의 모델
- T(Template) - 사용자에게 보여지는 부분
- V(View) - 실질적으로 프로그램이 동작하는 부분 request에 대해 처리하고 response해주는 역할
👉 MTV 패턴의 장점은 자신이 하려는 작업이 무엇인지 파악하면 어느 부분을 작업해야하는지 명확히 알 수 있다.
[이 외의 패턴]
- MVC 패턴 : Model, View Controller로 이루어진 패턴. 리액트, 플라스크가 사용
- MVP 패턴 : Model, Presenter, View로 이루어진 패턴, MVC 패턴보다 더 강한 결합을 지닌 패턴
- MVVM 패턴 : Model, View Model, View 로 이루어진 패턴, 뷰모델은 뷰를 더 추상화한 계층이고, MVC 패턴과는 다르게 커맨드와 데이터 바인딩을 가지는 것이 특징.
'woncoding > TIL' 카테고리의 다른 글
| TIL | 1.18.수 [CS 기초지식 | 트랜잭션] (0) | 2023.01.25 |
|---|---|
| TIL | 1.17.화 [CS 기초지식 | Index] (0) | 2023.01.25 |
| TIL | 1.6.금 [CS 기초지식 | 우선순위 큐] (0) | 2023.01.07 |
| TIL | 1.5.목 [CS 기초지식 | 해시 테이블] (0) | 2023.01.05 |
| TIL | 1.4.수 [CS 기초지식 | 배열 / 링크드리스트] (0) | 2023.01.05 |