특징
Django는 현재 가장 많이 사용되는 웹 프레임워크
- MVC 패턴 기반의 MVT
기존 Model = Django Model
기존 Controller = Django View = 데이터를 가져오고 변형하는 컴포넌트
기존 View = Django Template = 데이터를 사용자에게 보여주는 컴포넌트
- 객체 관계 매핑(ORM)
DB 시스템 - 데이터 모델 클래스를 연결시키는 다리 역할 => 다양한 DB시스템을 지원 및 다른 DB 시스템 변경 용이
- 자동으로 구성되는 관리자 화면
DB 관리 기능을 위해 기본 기능으로 관리자 화면을 제공
- 간편 URL 설계
웹 프로그래밍에서 필요한 URL 디자인을 간편한 URL 방식을 사용
URL에 정규표현식 사용 가능
- 자체 템플릿 시스템
내부적으로 확장이 가능하고 디자인이 쉬운 템플릿 시스템을 가지고 있음
- 캐시 시스템
동적 페이지 생성 = DB 쿼리 수행 + 템플릿 해석 + 관련 로직 실행 => 서버 부하 증가
따라서 캐시 시스템을 사용하여 자주 이용되는 내용을 저장하여 재사용 => 성능 증가
- 다국어 지원
텍스트 번역, 날짜/시간/숫자 포맷, 타임존과 같은 다국어 환경 제공
- 풍부한 개발 환경
테스트용 웹 서버 등 개발에 도움이 될 수 있는 여러가지 기능 제공
- 소스 변경사항 자동 반영
변경 사항이 발생할 때, 웹 서버를 다시 시작할 필요 없이 자동으로 반영됨
Django 설치
1st - Python설치
cmd창에서 설치 확인 ( python -V )
2nd - cmd창에서 Django설치 ( pip install Django )
cmd창에서 설치 확인 ( python -m django --version )
Django에서 애플리케이션 개발 방식
애플리케이션 = 웹 사이트를 설계할 때, 프로그램이 해야할 일을 적당한 크기로 나누어 모듈화 한 단위 프로그램
Django에서는 웹 사이트에 대한 전체 프로그램을 프로젝트(Project), 모듈화된 단위 프로그램을 애플리케이션(Application)이라고 함. => 즉, MVT패턴에 따라서 애플리케이션을 개발하도록 유도해줌
MVT 패턴
MVC패턴 = 데이터(Model), 사용자인터페이스(View), 데이터 처리 로직(Controller)을 구분하여 한 요소가 다른 요소에게 영향을 주지 않도록 설계하는 방식
파이썬은 View -> Template / Controller -> View 로 바뀐 MVT패턴
모델(Model)은 DB에 저장되는 데이터를 C.R.U.D
템플릿(Template)은 사용자에게 보여주는 UI
뷰(View)는 실질적으로 프로그램 로직이 동작하여 데이터를 가져와 적절한 처리후 템플릿에게 전달해주는 역할
클라이언트 요청 처리 과정
1st 클라이언트 요청을 받으면 URLconf를 이용하여 URL분석
2nd 분석 결과를 통해 해당 URL처리를 담당할 View 결정
3rd 해당 View는 자신의 로직을 수행함. if DB처리가 필요하면 Model을 통해 처리하고 그 결과를 반환
4th 해당 View 로직 처리가 끝나면 Template을 사용하여 클라이언트에게 전송할 HTML파일 생성
5th 해당 View가 생성된 HTML파일을 클라이언트에게 응답
Model - DB정의
모델(Model) = models.py = DB 정보를 담고 있는 Django의 클래스
Django에서는 ORM기법을 사용하여 애플리케이션에서 사용할 DB를 클래스로 매핑해서 코딩할 수 있다.
즉, 한개의 모델 클래스 = 한개의 DB 테이블에 매핑 / 모델 클래스의 속성 = DB 테이블의 컬럼에 매핑
ORM 기법 장점
1. DB 접근을 SQL 없이도 클래스 다루는 것처럼 접근 가능
2. DB 엔진 변경 용이
ORM(Object-Relational Mapping) = 객체와 관계형 DB를 연결해주는 역할
기존 방식에서는 DB에 접근하려면 직접 SQL언어에 대해 알고있어야하고, DB 접근을 위한 드라이버 API도 숙지 필수
ORM방식은 객체를 통해 필요한 작업을 수행하면 ORM이 자동으로 적절한 SQL과 DB API를 호출하여 처리
URLconf - URL정의
URLconf = urls.py =클라이언트 요청에 있는 URL을 분석
즉, 요청 URL이 urls.py에 정의된 URL 패턴과 매칭되는지 분석
urls.py 파일에서 URL을 정의하고, 해당 URL을 처리하는 함수(View)를 매핑하는 파이썬 코드를 작성
URLconf의 장점
유지보수에 용이
기존 방식처럼 URL 자체에 처리 함수나 처리용 스크립트 파일 이름이 들어가면 변경이 어려움
URLconf를 사용하면 View 함수 이름이 자주 바뀌는 경우에도 URLconf에서 매핑한 부분만 수정해주면 됨
Django에서 클라이언트 요청 URL을 분석하는 순서
1st - setting.py 파일에서 ROOT_URLCONF항목을 읽어서 urls.py(URLconf)의 위치를 알아내어 호출
2nd - URLconf에서 URL리스트를 검사
3rd - 있다면 매핑되는 View를 호출 / 없다면 에러를 처리하는 View 호출
URL 패턴 형식
1. Path Converter - <type:name> - path()함수
/home/<int:year>/
2. 정규 표현식 - re_path() 함수
r'^articles/?P<year>[0-9]{4}/$'
* 보통은 path() 함수를 많이 사용하는데 좀 더 정교하게 정의하고자 할 때 re_path()함수를 사용
View - 로직 정의
뷰(View) = views.py =함수 or 클래스의 메소드 = 웹 요청에 따른 응답을 반환 ( HTML 데이터, 리다이렉션, 에러메세지 )
뷰 함수 = 첫 번째 파라미터로 HttpRequest객체(request)를 받고, HttpResponse 객체를 반환
Template - 화면UI 정의
템플릿(Template) = *.html = 응답에 사용할 HTML 파일
Django는 자체 템플릿 엔진을 보유 => 템플릿 시스템 문법에 맞게 작성하여야 함
주의점 : 템플릿 파일을 적절한 디렉토리에 위치시켜야 함
Django가 템플릿 파일을 찾는 방법
settings.py의 TEMPLATE_DIRS 와 INSTALLED_APPS에 저장되어있는 앱의 디렉토리를 검사
MVT 코딩 순서
화면 설계 = View와 Template 코딩으로 연결
DB 설계 = Model 코딩에 반영
따라서 독립적으로 개발할 수 있는 Model을 먼저 코딩하고, View와 Template은 서로 영향을 미치므로 Model 설계 이후 같이 코딩하는 것이 일반적인 순서
보통 UI화면을 생각하면서 로직을 풀어나가는 것이 쉽기 때문에 Template 코딩 후 View 코딩으로 들어감
'Django' 카테고리의 다른 글
6 - 필수적으로 알아야 하는 Django의 핵심 기능들 (0) | 2023.02.24 |
---|---|
5 - MVT 실제 코딩하기 (0) | 2023.02.07 |
4 - Django 프로젝트 & 애플리케이션 생성 (0) | 2023.02.05 |
2 - 파이썬 웹 관련 라이브러리 이론 (0) | 2023.02.02 |
1 - 웹 애플리케이션 이론 (0) | 2023.02.02 |