- Django는 무엇인가?
웹 개발을 하는 데 처음부터 새롭게 만들지 않고 프레임워크라는 틀을 이용해 웹 개발에만 오로지 집중할 수 있게 하는 파이썬 웹 프레임워크입니다.
- Django의 기능을 알려주세요!
Complete(완결성 있는)
Versatile(다용도의)
Secure(안전한)
Scalable(확장성 있는)
5.Maintainable(유지보수가 쉬운)
6.Portable(포터블한)
*최근 몇년전에 무엇보다 새로운 유형의 데이터베이스, 템플릿 엔진들 그리고 캐싱에 대한 지원에서부터 일반 보기 함수와 클래스들의 추가까지 수정
을 했습니다. 여러 프로그래밍 작업을 위해 개발자들이 작성해야 할 코드를 줄여줍니다.
- Django는 독선적인가?
네, 말하자면, 독선적편입니다.
하지만 다른 많은 웹 프레임워크들도 마찬가지로 독선적 혹은 관용적이라고 합니다.
먼저, 독선적인 프레임워크들
은 어떤 특정 작업을 다루는 올바른 방법, 정해진 루트에 대한 분명한 의견을 갖고 있는데, 대부분이 특정 도메인내에서 빠른 개발방법을 제시하는 것들입니다. 즉, 잘 알려져 있는 문서화가 있다는 것을 의미합니다.
반면에,관용적인 프레임워크들
은 구성요소를 한데 붙여서 해결해야 한다거나 어떤 컴퍼넌트를 써야한다는 올바른 방법에 대한 제약이 거의 없다고 보면 됩니다. 개발자들이 특정 작업을 완수하는 데 가장 적절한 도구들을 이용하기 쉽게 만들어줍니다.
하지만, Django는 양쪽 세계의 최선의 결과를 전달하기 때문에 인기가 많다고 생각합니다.
- Django의 코드는 어떻게 생겼나요?
Django 웹 어플리케이션은 전형적으로 아래와 같이 분류된 파일들에 대해 일련의 단계를 수행하는 코드로 구성되어 있습니다. 장고는 모델 뷰 템플릿(Model View Template)(MVT) 아키텍처라고 부릅니다.
-- 단일 함수를 통해 모든 URL 요청을 처리하는 것이 가능하지만, 분리된 뷰 함수를 작성하는 것이 각각의 리소스를 유지보수하기 훨씬 쉽습니다.
-- URL mapper는 요청 URL을 기준으로 HTTP 요청을 적절한 뷰(view)로 보내주기 위해 사용됩니다
-- URL mapper는 URL에 나타나는 특정한 문자열이나 숫자의 패턴을 일치시켜 데이터로서 뷰 함수에 전달할 수 있습니다
-- HTTP 요청을 수신하고 HTTP 응답을 반환하는 요청 처리 함수
-- Model을 통해 요청을 충족시키는데 필요한 데이터에 접근
-- 탬플릿에게 응답의 서식 설정을 맡깁니다.
-- 탬플릿은 파일의 구조나 레이아웃을 정의하고(예: HTML 페이지), 실제 내용을 보여주는 데 사용되는 플레이스홀더를 가진 텍스트 파일
-- 뷰는 HTML 탬플릿을 이용하여 동적으로 HTML 페이지를 만들고 모델에서 가져온 데이터로 채웁니다
-- 탬플릿으로 모든 파일의 구조를 정의할 수 있습니다.탬플릿이 꼭 HTML 타입일 필요는 없습니다
Q. 그런데 MVC패턴과 유사하지 않나요? JAVA가 MVC패턴인데, Controller와 Templates만 다른데 도대체 무슨 차이일까요?
사실상 크게 보면 MVC패턴과 MTV패턴 큰 차이는 없습니다. MVC패턴의 어떤 문제점을 개선하기 위해 MVT패턴을 만들었습니다. 이 두가지 패턴은 어떤 상호 작용을 하고 있는지에 대해 주목해야 합니다.
<MVC패턴>
<MVT패턴>
표로 이 두 패턴의 차이점을 정리해보았습니다.
각각의 내용들을 미리 맛을 봐보자!
1) 요청을 알맞은 뷰로 전달 (urls.py)
2) 요청 처리하기 (views.py)
3) 데이터 모델 정의하기 (models.py)
4) 데이터 쿼리하기 (views.py)
5) 데이터 렌더링 (HTML 템플릿)
그 이외에는 추가로 장고가 제공하는 기능들은 많습니다.
양식, 사용자인증 및 권한, 캐싱, 관리 사이트, 데이터 직렬화 입니다.
양식 : HTML 양식은 서버에서 처리할 사용자 데이터를 수집하는 데 사용됩니다. 장고는 양식 작성, 유효성 검사 및 처리를 단순화합니다.
사용자 인증 및 권한 : 장고에는 보안을 염두에 두고 구축된 강력한 사용자 인증 및 권한 시스템이 포함되어 있습니다.
캐싱 : 컨텐츠를 동적으로 작성하는 것은 정적 컨텐츠를 제공하는 것 보다 많은 연산을 필요로 하기 때문에 느립니다. 장고는 유연한 캐싱을 제공하여 렌더링된 페이지 전체 또는 일부를 저장하여 필요할 때를 제외하고 다시 렌더링하지 않도록 할 수 있습니다.
관리 사이트 : 기본 스켈레톤을 사용하여 앱을 만들 때 장고 관리 사이트가 기본적으로 포함됩니다. 사이트 관리자가 사이트의 모든 데이터 모델을 작성, 편집 및 볼 수있는 관리 페이지를 쉽게 제공할 수 있습니다.
데이터 직렬화 : 장고를 사용하면 데이터를 XML 또는 JSON으로 직렬화하고 제공할 수 있습니다. 이 기능은 웹 서비스 (다른 응용 프로그램이나 사이트에서 사용하기 위해 순수하게 데이터를 제공하고 자체를 표시하지 않는 웹 사이트)를 만들거나 클라이언트 쪽 코드가 모든 데이터 렝더링을 처리하는 웹 사이트를 만들 때 유용할 수 있습니다.