훈훈훈
파이썬(Django) : 장고 웹 프레임 워크 정리 본문
# 프로젝트와 애플리케이션
- 프로젝트
웹 사이트에 대한 전체 프로그램을 프로젝트(Project)라고 한다,
- 애플리케이션
모듈화된 단위 프로그램을 애플리케이션이라고 한다.
즉, 애플리케이션 프로그램들이 모여 프로젝트를 구성하는 개념
# MVT 패턴
MVT 각 기능을 구분해서 한 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식이다. (MVC 패턴과 동일)
- Model : 데이터베이스에 저장되는 데이터를 의미
- VIew : 실질적으로 프로그램 로직이 동작하여 데이터를 가져오고 처리한 결과를 Templete에 전달
- Template : 사용자에서 보여지는 UI 부분
일반적으로 REST API 를 생성할때는 Model과 View 영역만 작성한다.
** Client의 요청을 받고, Django에서 MVT 패턴에 따라 처리하는 과정
- Client로부터 요청을 받으면 URL conf를 이용하여 URL 분석
- URL 분석 결과를 통해 URL에 대한 처리를 담당할 View 결정
- View는 자신의 로직을 실행하면서, 만일 데이터베이스 처리가 필요하면 Model을 통해 처리하고 그 결과를 반환받는다.
- View는 자신의 로직 처리가 끝나면 템플릿을 사용하여 클라이언트에 전송할 HTML 파일을 생성
- View는 최종 결과로 HTML 파일을 클라이언트에게 보내 응답
# Model - 데이터 베이스 정의
- 모델은 사용될 데이터에 대한 정의를 담고 있는 장고의 클래스
- 장고는 ORM 기법을 사용하여 애플리케이션에서 사용할 데이터베이스를 클래스로 매핑
- ORM 이란 ?
객체와 관계형 데이터베이스를 연결해주는 역할을함
- 하나의 모델 클래스는 하나의 테이블에 매핑되고, 모델 클래스의 속성은 테이블의 컬럼에 매핑
=> SQL Query 문 없이도 다룰 수 있게됨
# URLconf - URL 정의
- 클라이언트로부터 요청을 받으면 가장 먼저 요청에 들어있는 URL 분석
- 즉, 요청에 들어있는 URL이 urls.py 파일에 정의된 URL 패턴과 매칭되는지 분석
# View - 로직 정의
- 웹 요청을 받아 데이터베이스 접속 등 해당 애플리케이션 로직에 맞는 처리를 함
- 그 결과, 데이터를 HTML로 변환하기 위해 Template을 처리 후, 최종 HTML로된 응답 데이터를 웹 클라이언트에 반환
# Template - 화면 UI 정의
- Django가 Client에 변환하는 최종 응답은 HTML 파일임
- 웹 브라우저는 응답으로 받은 HTML 파일을 해석 후, 웹 브라우저 화면에 UI를 보여줌
# mysite
- "django-admin startproject mysite" 명령어로 생성
- 구성 : "__init__.py", "settings.py", "urls.py", "wsgi.py"
- 각 파일 목적
my site directory : 프로젝트명으로 만들어진 디렉터리, 프로젝트 관련 파일 들어있음
1. __init__.py : 디렉터리에 해당 파일이 있으면 패키지로 인식
2. settings.py : Project 설정 파일, 프로젝트에 필요한 설정 값들 저장
3. urls.py : Project 레벨의 URL 패턴을 정의하는 최상위 URLconf, 보통은 애플리케이션 디렉터리 마다 하위 urls.py 생성
4. wsgi.py : 웹 서버와 WSGI 규격으로 연동하기 위한 파일 (CGI와 유사한 역할)
# 테이블 생성
- migrate 명령 : 데이터베이스에 변경사항이 있을 때 반영해주는 명령
- makemigrations : 데이터베이스에 변경이 필요한 사항을 추출함 (migrate 명령어 적용 전에 선행되어야함)
# 테이블 정의
- PK(Primary Key) : 클래스에 지정하지 않아도, Django에서 디폴트로 Not Null 및 Autoincrement로 속성 지정, 이름은 id로 자동 지정
- FK(Foreign Key) : 항상 다른 테이블의 PK에 연결
- __str__( ) : 객체를 문자열로 표현할 떄 사용하는 함수
'파이썬 > Django' 카테고리의 다른 글
파이썬(Django) :: SECRET_KEY 분리 방법 (0) | 2020.02.15 |
---|---|
파이썬(Django) : 인증(Authentication)과 인가(Authorization) (0) | 2020.02.13 |
파이썬(Django) : 회원가입, 로그인 Simple API 구현 (1) | 2020.02.10 |
파이썬(Django) : QuerySet(쿼리셋) 이란 ? (1) | 2020.02.06 |
파이썬(Django) : 설치 및 실행 과정 정리 (0) | 2020.02.01 |