Django를 쓰는 이유...
장고의 홈페이지에 들어가면 나오는 화면
장고의 장점
- 장고는 Python 기반 웹프레임 워크이다.
- 따라서 파이썬에서 가능한 모든 동작이 가능하며, 강력한 라이브러리들이 많다.
- 반복적으로 구현해야 하는부분은 이미 만들어져 있다.
- 로그인, 회원가입, 인증, CORS, data parsing 등 라이브러리를 이용해 간단하게 사용이 가능하다.
- 웹을 만들어야 할때 프론트와 관련된 프레임워크(React, Vue, angular)와 같은것을 사용하지 않고도 만들 수 있다.
- template에 html을 넣어 연동이 가능하며 특정 조건은 DTL(Django Template Language)를 이용하여 조작이 가능하다.
- 데이터베이스 테이블을 models.py에 클래스로 작성하여 작업량을 줄인다.
- 한번 작업하면 테이블까지 생성되어 매핑되기 때문에 편하게 작업이 가능하다.
- 위와같은 기능들로 인해 개발시간이 크게 단축된다.
장고의 단점
- 파이썬이 가지는 단점을 그대로 가져오게 된다.
- 인터프리터 언어이기 때문에 생기는 문제점(가장크게 보는것은 속도와 실행될때까지 걸리지 않는 에러)이 있다.
- 한국에서 많이 사용되지 않기때문에 한글로된 자료가 찾기 힘들다.
- 이미 만들어진 기능을 사용하는 경우가 많기 때문에 원하는대로 커스텀을 하기가 힘들다.
- 이미 라이브러리를 사용하고 있는 상황에서 수정을 해야하는 경우가 많아서 해석해야 한다.
- 그렇지만 다른곳은 이해하고 적용해야 하기때문에 생각해보면 큰 단점이 아닐지도...
- ORM 기반이기 때문에 내가 원하는 결과가 나오지 않을때가 있다.
- 익숙해지면 해결될 문제같지만 join을 하는경우가 힘들었다.
- 중계테이블을 따로 건드는것이 어렵다.
- 추천하지는 않지만 SQL을 작성하여 데이터를 가져오는 것도 가능하다고 한다.
장고의 특징
다른 프레임워크에서는 MVC모델이란 것을 사용한다.(특히 Spring)
그런데 장고는 MTV라는 패턴을 사용한다고 적혀있다.
MVC와 비교하여 적어본다.
Model(Model) : 모델은 같다고 생각한다. 데이터에 관한 정보를 다루게 되며 보통 DB쪽을 생각하면 된다.
View(Template) : 실제로 화면을 보여주는 인터페이스이다.
Controller(View) : Model과 View를 연결해주는 역할이다. 동작해야 하는 함수들이 정의되어 있으며,
urls.py에서 넘어온 요청을 토대로 model에서 데이터를 읽어봐 작업을 수행한후 template에서 html파일을 가져와
render한 후에 사용자에게 넘겨주게 된다.