Cloud SA's This and That

[Python] - Django Framework - MTV 본문

Develop/Python

[Python] - Django Framework - MTV

뽀삐누냐 2023. 7. 21. 14:47
SMALL

Framework : 어플리케이션 개발을 하기 위한 기반시스템 / 미리 구현 되어있는 기능 기반으로 어플리케이션 기능 구현

Django Framework : Python 기반의 WEB Framework / 국내에서는 Spring Framework 많이 사용함 (java 기반)

 

[Django Framework 특징] 

-MTV 패턴 사용(Model, Template, View) - Model : DB 연관/Template : client에게 넘겨줄 페이지 구성(정적 데이터)

/View : 실제 기능 구현

-객체 관계 매핑(ORM) 사용하여 데이터베이스 구조 명세화 / ORM 기법 : 객체와 관계형 DB 연결해주는 기술

-프레임워크 프로젝트 생성  자동으로 관리자 페이지 생성, 사용자  그룹 등을 정의(+권한부여), GUI 형식으로 관리가능

-다양한 형태의 URL Mapping 진행 가능

 

[Django MTV Model]

-Model (DB) : Django Project에서 사용할 Database ORM기법으로 정의 / DB내의 테이블에 객체를 연결하여 쉬운 접근성 제공

맵핑  객체를 대상으로 SQL 명령 실행(데이터 처리 작업)

-Template (HTML Document/ Design) : Web Server Document 구조 정의 / View에서 Rendering  사용할 HTML 파일 저장

/ 계층 구조 형식 지원

-View (Control) : Model Template 제어 / View 내부에는 웹사이트의 기능이 실질적으로 정의 / FBV(Function Based View)방식이나 CBV(Class Based View)방식으로 구성 - 혼합 형식 Best

 

 

[Django MTV Model 동작 순서]

  <머릿속에 들어있어야 편하다>

  1. Client 요청 URL URLconf 받아들여 해당 요청 분석 / 분석 결과를 바탕으로 View 내부에 정의된 웹사이트 기능 호출
  2. 호출된 웹사이트 기능은 Client 요청에서 요구하는 형식에 맞추어 해당 기능 수행
  3. 만약 View에서 Database 조작이 필요할 경우 Model에서 정의된 형식에 맞추어 조작(CRUD 작업 수행)
  4. View Client 요청에 따른 View 내부에 정의된 기능에 대한 작업 결과를 바탕으로 지정된 Template 이용하여 Rendering (Client에게 응답해줄 페이지를 구성작업 진행
  5. View Rendering 동적 페이지를 최종적으로 Client에게 응답

 

 

[가상환경 생성] -Vscode 들어가서 폴더 열고 ctrl+~ -> 터미널창

 

1. python -m pip install --upgrade pip --user

# pip 모듈 업그레이드 진행

 

2. python -m pip install virtualenv --user

# 가상 환경을 사용하기 위해 virtualenv 모듈 설치

 

3. python -m venv myhome

# 해당 폴더 하위에 myhome이라는 이름의 가상환경 생성

 

4. myhome\Scripts\activate

# 생성된 가상환경 안으로 접근

>myhome\Scripts\activate 에서 보안 오류 

해결 방법 : [Django] VSCode 에서 CategoryInfo : 보안 오류: (:) [], PSSecurityException 날때 (tistory.com)

 

5. pip install django==3.1

# 가상환경에 장고 설치

 

 

>생성 결과 (pip list : 가상 환경에 설치된 버전  패키지 확인)

 

 

 

[Django Project Create]

 

1. django-admin startproject config .

# 장고 프로젝트 생성 명령어 ("." : 현재 경로에 config라는 이름의 프로젝트 생성 /  config 필요 없음)

>django 내부의 웹서버를 자체적으로 실행할  사용

 

2. python manage.py migrate 

> 프로젝트 생성  manage.py 생성, 장고 프로젝트  각종관리 작업  manage.py 스크립트 파일이 사용됨

>manage.py 이용하여 위에서 생성한 장고 프로젝트에서 사용할 database 생성 ( SQLlite3 사용 - 파일 형태로 DB 관리)

 

3. python manage.py createsuperuser

# 프로젝트 관리자 계정 생성 ( 프로젝트 내부의 모든 권한이 부여된 Super User 생성)

 

4. django-admin startapp MTV

# 장고 프로젝트 내부에 MTV라는 이름의 새로운 APP 생성

>해당 App 사용하는 전용 디렉터리가 함께 생성됨 ( 작업  유리)

>장고에서는 전체 WEB Site 기능을 APP으로 분류하여 작업하는게 일반적

>새로운 APP 생성  장고 프로젝트에 등록해야  -> 5 config에서 등록

 

5. config\settings.py 

>운영환경에서는 False ( 해커에게 유리한 환경 차단)

 

>클라이언트 접근  설정 필요

 

>프로젝트에 MTV APP 등록

 

>Database 엔진 정보, 이름 정보

 

>USE-TZ : 서머타임 사용 여부 (한국은 적용 X)

>코드 잘못 입력하니 admin페이지 오류 생겼었음.

 

6. python manage.py runserver

#중지는 ctrl+c 입력

>일반 페이지 접속 URL : 127.0.0.1:8000 

>관리자 페이지/관리자 계정 로그인 URL : 127.0.0.1:8000/admin

 

 

 

 

[URLconf]

-클라이언트 요청 URL 따라 수행할 View 정의된 웹사이트 기능을 연결

-장고 내부에 정의된  사이트의 기능을 사용하기 위해서는 반드시 해당 기능과 연결되는 URL

 

 

**<흐름 이해 중요>**

 

>작업경로 : config \ urls.py

>Path('MTV/', include('MTV.urls')) : Localhost:8000/MTV입력  MTV urls 불러옴

 

>작업경로 : MTV \ urls.py (새로 생성)

 

 

 

 

[Django Template]

 

>작업경로 : config \ settings.py

>'DIRS' : [BASE_DIR/ 'templates'] : 폴더의 절대경로  / BASE_DIR : 변수 , templates : 폴더 이름

>폴더  파일 새로 생성

 

>render함수 인자  : (request, 경로)

>render : view template 연결 수행

 

>주소   127.0.0.1:8000 적어도 메인 페이지(index.html) 뜨도록 하고싶을때

>from MTV import views 추가 입력

>path(' ' , view.index) 추가 입력

 

 

LIST