Django의 기초
Django의 기초에 대해서 알아보자.
Django는 파이썬 웹 프레임워크이다.
그럼 웹 프레임워크란 무엇인가?
프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와
라이브러리 모임 (간단하게 프레임워크라고도 부른다.)
이 라이브러리를 사용하여 좀더 쉽고 간편하게 웹을 만들수 있게 해준다.
Django의 특징
- MVC 패턴 기반 MTV (기본적으로 Model-View-Controller 를 기반으로 한 프레임워크)
- ORM(Object-relational mapping) 기능 지원
- 쉬운 DB관리를 위해 프로젝트를 생성하면서 관리자기능을 제공
- 쉬운 URL 파싱 기능 지원
- 동일한 소스코드에서 다른 나라에서 용이하도록 번역, 날짜/시간/숫자 등의 포맷 타임존 지정 등의 기능을 제공
위와 같은 기능을 가지고 있다
특징 하나하나에 대해서 좀더 정확하게 확인해보도록 하자.
1. MVC 패턴 기반 MTV
전통적인 웹 프레임워크의 모델이 MVC(Model, View, Controller)패턴이다.
- Model = 데이터 베이스 구축
- View = HTTP 요청을 처리하는 웹 템플릿 시스템
- Controller = URL의 라우팅을 처리하는 URL Controller
비슷해보이지만 Django에서 Controller기능을 지원하기 때문에 T(Template)가 추가되었다.
MTV(Model, Template, View)
- Model = 데이터 베이스 구축
- Template = MVC에서 V역할을 T가한다. 사용자에게 보여지는 화면을 처리.
- View = 웹 프로젝트를 이루고 있는 어플리케이션들의 제어와 흐름과 로직을 처리.
2. ORM(Object-Relational-Mapping)기능 지원
ORM은 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있다.SQL 문을 사용하면서 같이 필요한 선언문, 할당, 종료 같은 부수적인 코드가 사라지거나 줄어들며, 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높일 수 있다
객체-관계 간의 불일치
다음과 같은 특성에서 객체-관계 간의 불일치가 생긴다.
세분성(Granularity)
경우에 따라서 데이터베이스에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있다.
상속성(Inheritance)
RDBMS는 객체지향 프로그래밍 언어의 특징인 상속 개념이 없다.
일치(Identity)
RDBMS는 기본키(primary key)를 이용하여 동일성을 정의한다. 그러나 자바는 객체 식별(a==b)과 객체 동일성(a.equals(b))을 모두 정의한다.
연관성(Associations)
객체지향 언어는 방향성이 있는 객체의 참조(reference)를 사용하여 연관성을 나타내지만 RDBMS는 방향성이 없는 외래키(foreign key)를 이용해서 나타낸다.
탐색(Navigation)
자바와 RDBMS에서 객체를 접근하는 방법이 근본적으로 다르다. 자바는 그래프형태로 하나의 연결에서 다른 연결로 이동하며 탐색한다. 그러나 RDBMS에서는 일반적으로 SQL문을 최소화하고 JOIN을 통해 여러 엔티티를 로드하고 원하는 대상 엔티티를 선택하는 방식으로 탐색한다.
3. 쉬운 DB관리를 위해 프로젝트를 생성하면서 관리자기능을 제공
Django는 하나의 project와 여러개의 앱으로 이루어져있다.
'Python > Django기초' 카테고리의 다른 글
Python Module & Packages (0) | 2021.09.09 |
---|---|
Django의 코딩 스타일 (0) | 2021.09.09 |
Django Backend Westargram 3장(로그인 구현) (0) | 2021.09.09 |
Django Backend Westargram 2장 (Mysql설정 및 회원가입 구현) (0) | 2021.09.09 |
Django Backend Westargram 1장 (기초 설정) (0) | 2021.09.09 |