본문 바로가기
○ WEB/Tip

MVT, 장고 기본

by 0ver-grow 2020. 1. 20.
반응형

교제 링크

MVT방식

자바 웹 프로그램으이 MVC방식과 동일한 개념, 웹 프로그래밍 영역은 3가지 개념으로 나눠서 개발하는 방식.

MVT방식의 장점

1. 나눠서 개발하면 모듈간의 독립성 유지 가능.
2. SW 개발시 중요한 원칙인 느슨한 결합 설계 원칙에 부합.
3. 디자이너, 응용 개발자, DB설계자 간 협업 쉬워짐
4. 3가지 중 순서상관없이 코딩가능 / 일반적으론 모델부터 개발하고 템플릿 > 뷰(클래스형 뷰 처럼 뷰가 간단한 경우 뷰먼저) 진행

3가지 개념 

모델 : 테이블을 정의
뷰 : 앱의 제어 흐름 및 처리 로직 정의 (화면설계) 
템플릿 : 사용자가 보게 될 화면의 모습을 정의 (화면설계)

장고?

장고 프로젝트 생성 > MVT용 뼈대 자동생성

코딩순서

자신만의 코딩 순서를 정하는 것이 로직을 풀어나가는데 일관성 유지가능, 웹개발 노하우도 빨리 습득
필자기준의 코딩 순서
1. 프로젝트 뼈대 만들기 : 개발시 필요한 디렉터리, 파일생성
2. 모델 코딩 : 테이블 관련 사항을 개발(models.py, adimin.py)
3. URLconf 코딩 : URL, 뷰 매핑 관계 정의 (urls.py)
4. 뷰 코딩 : 앱 로직 개발 (view.py)
5. 템플릿 코딩 : 화면 UI 개발 (templates/디렉터리 하위 *.html 파일)

settings.py

프로젝트 설정파일(루트 디렉터리, 디렉터리위치, 로그형식, 디버그, 보안 등)
장고 처음 생성시 기본 사항은 자동 등록
추가 필요 사항은 추가 등록
설정내용에 익숙해질수록 장고이해에 좋다.
고로 프로젝트 진행하면서 이 파일에 정의된 항목이 어떤 역할인지 자주 확인해줄 것을 권장

프로젝트 개발 필수 사항 (필요시 수정)

DB설정 : 디폴트로 SQLite3 DB엔진 사용 지정. MySQL 등 여타 DB 변경희망시 수정해줘야함
앱 등록 : 프로젝트 포함된 앱들은 모두 설정 파일에 등록
템플릿 함목 설정 : TEMPLATES항목 지정
정적 파일 항목 설정 : STATIC_URL 관련 항목 지정
타임존 지정 : 처음에는 세계표준시(UTC)로 설정됨, 한국 시간으로 변경요망

model.py

테이블 정의 파일
DB처리는 ORM기법 사용{ 테이블을 클래스로 매핑->테이블에 대한 CRUD(Create,Read,Update,Delete)기능을 클래스 객체에 대해 수행->장고 내부적으로 SQL처리->DB반영 }

장고에선 ORM기법따라 테이블을 하나의 클래스로 정의
테이블의 컬럼은 클래스의 변수로 매핑

DB변경사항 발생시, DB에 실제로 반영해주는 작업 필요

URLconf

URL과 뷰(함수, 클래스의 메소드)를 매핑
하나의 파일에 정의, 2개의 파일에 정의할 수도 있다. 이중 후자를 추천!
이유는? 프로젝트 URL(프로젝트 전체 URL정의)과 앱 URL(앱마다 정의) 으로 2계층으로 나눠 코딩
URLconf모듈을 계층적으로 구성하기에 변경이 쉽고 확장도 용이함 + 타 프로젝트에 재활용 가능

views.py

뷰 로직의 핵심 (장고는 여타 프레임워크보다 뷰작성 편리 기능 많음. 대표적인 것이 단축 함수, 클래스형 제네릭뷰)
가독성, 유지보수 편리성, 재활용 등을 고려해야
뷰 로직을 함수로 코딩할까? 클래스로 코딩할까? 필자는 클래스형뷰를 추천!
이유는? 제네렉 뷰 사용가능, 재활용 및 확정성 용이

templates

웹 페이지별로 하나씩 필요하므로 템플릿 파일을 한 곳에 모아두기 위한 디렉터리 필요

디렉터리 구분하기
프로젝트템플릿 : TEMPLATES설정의 DIRS항목에 지정됨, base.html 등 전체 프로젝트의 룩앤필 관련 파일 모음
앱템플릿 : 각 앱 디렉터리마다 존재, 각 앱에서 사용하는 템플릿 파일들이 위치함

템플릿 파일 찾는 순서알아둬야.
보통 검색은 프로젝트템플릿 > 앱템플릿

Admin 사이트

테이블 내용(컨텐츠) 열람 및 수정
SQL없이 테이블 내용 확인 및 레코드 입력 수정가능
Admin사이트에 원하는 테이블 등록위해선 admin.py파일에 작업

개발용 웹 서버 - runserver

작성 코드 실행 및 테스트 과정 필요함 이때 사용하는 테스트용 웹 서버.
장고의 모든 기능 실행가능
런서버 기동된 상태에서 소스 수정하면 자동 반영됨.
런서버는 상용 웹서버 대비 처리 능력 부족, 보안 취약
다만, 상용화를 고려한다면 아파치, Nginx 등 상용 웹서버 사용할 것

venv 모듈

파이썬 3.x설치시 venv 모듈로 가상환경 설정 가능
가상환경이 있어야 파이썬 lib끼리 충돌 방지가능
외부 lib들은 상호간의 의존성이 높기에 버전 다르면 오작동 일으킴
고로 파이썬 프로젝트 개발시 가상환경은 필수
그만큼 외부 lib 활용 작업이 절대적, lib충돌도 흔히 발생하기 때문

lib를 시스템의 파이썬 lib 디렉터리에 설치하지 않고 별도의 개발환경에 설치하여 타 파이썬 프로그램에 영향을 주지 않도록 만듦

반응형

'○ WEB > Tip' 카테고리의 다른 글

윈도우에서 bash 사용하기!!  (0) 2020.01.20
가상환경 vDJBook만들기  (0) 2020.01.20
virtualenv 툴, venv 모듈 차이점?  (0) 2020.01.20