이번 포스팅에서는 장고(Django)에 대하여 공부를 해보고자 한다.
공부할 때 참고할 책: https://wikidocs.net/book/4223
장고(Django)
장고란 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework)를 말한다.
보안이 우수하고 유지 보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 준다.
활발한 커뮤니티들이 있고, 좋은 참고 자료와 무료 및 유료 지원을 하는 옵션들이 제공된다.
웹 프레임워크(Web Framewok)
동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다.
웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있다.
장고를 사용하여 제작된 대표적인 웹사이트
- 인스타그램
- NASA
- Spotify
- 드롭 박스
- Mozilla Firefox 지원 사이트
- 요기요
장고(Django) 특징
MTV 패턴
장고는 MVC (Model-View-Controller)을 기반으로 한 프레임 워크이다.
하지만 장고에서는 View를 Template, Controller를 View라고 부른다.
장고에서 Model(모델)은 MVC 패턴의 모델에 대응되며 DB에 저장되는 데이터를 의미한다.
Template(템플릿)은 MVC 패턴의 뷰에 대응되며 유저에게 보이는 화면을 의미.
View(뷰)는 MVC 패턴의 컨트롤러에 대응되며 요청에 따라 적절한 로직을 수행하여 결과를 템플릿으로 렌더링 하며 응답한다.
URLConf(URL 설계)라는 단계가 하나 더 있는데 URL 패턴을 정의하여 해당 URL과 뷰를 매핑하는 단계라고 생각하면 된다.
객체 관계 매핑
장고의 객체 관계 매핑은 데이터베이스 시스템과 데이터 모델 클래스를 연결하는 다리와 같은 역할을 한다.
구축한 데이터베이스 시스템을 다른 데이터베이스로 변경하는 경우에도 설정을 조금만 변경하면 가능할 정도로 쉽고 편리하다.
자동으로 구성되는 관리자 화면
장고는 웹서비스 콘텐츠 즉 데이터베이스에 대한 관리기능을 위하여 프로젝트를 시작하는 시점에 기본기능으로 관리자 화면을 제공한다.
개발자가 별도로 관리 기능을 개발할 필요가 없다.
우아한 URL 설계
우아한 URL 방식을 채택하여 URL을 직관적이고 쉽게 표현할 수 있다.
정규 표현식을 사용하여 복잡한 URL도 표현할 수 있으며, 각 URL 형태를 파이썬 함수에 1:1로 연결할 수 있도록 되어있어 개발이 편리하며, 이해하기도 쉽다.
자체 템플릿 시스템
장고는 내부적으로 확장이 가능하고 디자인이 쉬운 강력한 템플릿 시스템을 갖고 있다.
이를 통해 화면 디자인과 로직에 대한 코딩을 분리하여 독립적으로 개발 진행이 가능하다.
캐시 시스템
장고의 캐시 시스템은 캐시용 페이지를 메모리, 데이터베이스 내부, 파일 시스템 중 아무 곳에나 저장할 수 있다.
또한 캐시 단위를 페이지에서부터 사이트 전체 또는 특정 뷰의 결과, 템플릿의 일부 영역만을 지정하여 저장해둘 수도 있다.
다국어 지원
장고는 동일한 소스코드를 다른 나라에서도 사용 가능하도록 텍스트의 번역, 날짜/시간/숫자의 포맷, 타임존의 지정과 같은 다국어 환경을 제공한다.
간단한 작업만으로 메시지를 하나 이상의 언어로 번역해 주기 때문에 다국어를 제공하는 웹 사이트에 아주 유용하게 사용할 수 있다.
풍부한 개발환경
장고는 개발에 도움이 될 수 있는 여러 가지 환경을 제공한다.
대표적으로 테스트용 웹 서버를 포함하고 있어서 개발 과정에서 아파치 등의 웹 서버가 없어도 테스트를 진행할 수 있다.
소스 변경사항 자동 반영
장고에서는 *.py 파일의 변경 여부를 감시하고 있다가 변경이 되면 실행 파일에 변경 내역을 바로 반영해 준다.
장고 테스트용 웹 서버를 실행 중인 상태에서 소스 파일을 수정하더라도 웹서버를 다시 시작할 필요 없이 자동으로 새로운 파일이 반영된다.
장고의 장단점
장점
파이썬 기반 웹 프레임워크다.
비교적 익히기 쉬운 파이썬을 기반으로 익히기 쉬우며 파이썬에서 가능한 모든 동작이 가능하며, 강력한 라이브러리들이 많다.
반복적으로 구현해야 하는 부분들이 이미 완성되어 있다.
로그인, 회원가입, 인증, CORS, data parsing 등 라이브러리를 통해 간단히 구현이 가능하다.
웹을 만들어야 할 때 프런트와 관련된 프레임워크(React, Vue, angular)를 사용하지 않고도 만들 수 있다.
template에 html을 넣어 연동이 가능하며 특정 조건은 DTL(Django Template Language)를 이용하여 조작이 가능하다.
데이터베이스 테이블을 models.py에 클래스로 작성하여 작업량을 줄인다.
한번 작업하면 테이블까지 생성되어 매핑되기 때문에 편하게 작업이 가능하다.
개발 시간이 단축된다.
스크립트 언어이므로 비교적 쉽고 간결하며 그 결과 개발 시간의 단축으로 다가온다.
단점
파이썬이 가지는 단점을 그대로 가져온다.
인터프리터 언어이기 때문에 생기는 문제점(가장 크게 보는 것은 속도와 실행될 때까지 걸리지 않는 에러)이 존재한다.
한글화된 자료가 부족하다.
한국에서보다 외국에서 많이 사용돼서 대부분 영어로 된 자료가 많다.
이미 만들어진 기능을 사용하는 경우가 많기 때문에 원하는 대로 커스텀을 하기가 힘들다.
이미 라이브러리를 사용하고 있는 상황에서 수정을 해야 하는 경우가 많아서 해석해야 한다.
ORM 기반이기 때문에 내가 원하는 결과가 나오지 않을 때가 있다.(문법적 어려움?)
중계 테이블을 따로 건드는 것이 어렵다.
SQL을 작성하여 데이터를 가져오는 것도 가능하다고 한다. (추천 x)
'Framework > Django' 카테고리의 다른 글
[Django] 장고(Django) 기본요소 - 장고 관리자(Admin) (0) | 2022.11.25 |
---|---|
[Django] 장고(Django) 기본요소 - 모델(Model) (4) | 2022.11.24 |
[Django] 장고(Django) 기본요소 - URL과 View (2) | 2022.11.23 |
[Django] 장고(Django) 프로젝트 생성하기 (0) | 2022.11.23 |
[Django] 장고(Django) 개발 환경 준비하기 (0) | 2022.11.20 |