Archive

[Django] 장고 기본개념 ( MVT / Structure / Project생성 / Application생성 ) 본문

------ Web ------/Backend

[Django] 장고 기본개념 ( MVT / Structure / Project생성 / Application생성 )

enent 2022. 6. 19. 23:53
반응형

1. MVT

웹 개발시 일반적으로 사용되는 MVC의 Django 버전.

데이터, 인터페이스, 데이터 처리로직을 분리하여 독립적으로 실행하고 각 로직들의 영향도를 최소화 하도록 설계된 개념이다

 

Model(Model) View(Controller)  Template(View) 
DB에 저장되는 데이터 데이터를 가져오고 처리결과를 template에 전달 사용자에게 보여지는 UI

 

 

 

1) Model

  • 사용될 데이터에 대한 정의
  • models.py 에 정의
  • ORM(Object Relational Mapping)을 통해 DB를 Class로 mapping
    : 하나의 Model Class는 하나의 DB Class에 Mapping, Model Class의 속성은 Table의 Column에 매핑

 

2) URL conf

  • URL 과 View 가 매핑되어 있음
  • urls.py 에 정의
  • Path Converter을 통해 매칭 여부 파악
  • 일반적으로는 path()함수를 많이 사용하고, 정교한 정의가 필요할 시 re_path()함수 사용

 

3) View

  • 웹 요청을 처리하고, 해당 결과를 HTML로 변경하여 Response 를 웹 Client로 반환
  • views.py에 정의
  • 다양한 형태의 Response를 만들기 위한 로직들이 작성되는 공간

 

4) Template

  • 화면 UI를 Template에 맞게 작성한 html파일
  • 적절한 Dir에 위치시키고, Settings.py의 TEMPLATE_DIRS, INSTALLED_APPS에 지정해야함

 

*MVT 개발 순서

정해진 순서는 존재하지 않으며, 자신만의 순서를 찾아나가는 것이 필요하다.

화면 설계는 View - Template이 연결되어 있으며, 테이블 설계는 Model에 반영되어 있다.

-> 독립적으로 개발할 수 있는 Model을 먼저 개발하는 것이 일반적이다

 

 

2. 프로젝트 구조

 

  • Root Dir : 최상위 디렉토리. 주로 settings.py의 BASE_DIR 
    - db.sqlite3
    - manage.py : Django 명령어 처리
    - Project Dir : 프로젝트 디렉토리. 프로젝트 관련 파일들
         ▶ __init__.py : Python Package로 인식하게끔 해주는 파일
         ▶ settings.py : Project 설정 파일
         ▶ urls.py : Project Level의 URL 패턴을 정의하는 최상위 URLconf. 보통은 Application Dir마다 하위 urls.py가 있음
         ▶ wsgi.py : 웹 서버와 WSGI 규격으로 연동하기 위한 파일
    - Application Dir : 애플리케이션 디렉토리. 애플리케이션 관련 파일들
         ▶ __init__.py : Python Package로 인식하게끔 해주는 파일
         ▶ admin.py : Admin 사이트에 모델 등록
         ▶ apps.py : 애플리케이션의 설정 클래스 정의
         ▶ Migrations Dir : DB 변경사항 관리를 위한 디렉토리
         ▶ models.py : DB Model Class 정의
         ▶ tests.py : 단위 테스트용 파일
         ▶ views.py : 뷰 함수 정의
         ▶ Template Dir : 템플릿 파일들. Project Level의 Template과 Application Level의 Template으로 구분
         ▶ Static Dir : CSS, Image, Js 파일들. Project Level의 Template과 Application Level로 구분
         ▶ Log Dir : 로그 파일들. settings.py의 LOGGING항목으로 지정

 

 

 

1) 프로젝트 생성

$ django-admin startproject mysite

Pycharm 기준으로 New Project - Django 로 생성하면 해당 명령어 없이도 프로젝트가 생성된다.

 

 

2) 애플리케이션 생성

$ python manage.py startapp polls

애플리케이션 디렉토리와 하위 파일들이 자동으로 생성되는 것을 볼 수 있다.

 

3) settings.py 설정

settings.py 내에는 각종 Dir path, Log type, Application 이름 등이 지정되어 있다

 

초기에 추가/변경이 필요한 설정값들

  • ALLOWED_HOSTS
    : runserver 기동할 서버 ip 등록
    : DEBUG = TRUE -> 개발모드 / FALSE -> 운영모드
    : 개발모드 시, 값을 지정하지 않아도 ['localhost', '127.0.0.1']
  • INSTALLED_APPS
    : Application 설정 Class 등록
  • DATABASES
    : DB 엔진 설정 ( Mysql, Oracle, PostgreSQL 등 ) 
  • TIME_ZONE
    : UTC -> 'Asia/Seoul' (한국에서만 서비스시, USE_TZ=False설정이 편함(장고가 자동으로 TZ조절하는 설정))

4) 기본 테이블 설정

$ python manage.py migrate

Django는 USER와 Table이 필요하다는 가정하에 설계된 프레임워크로, DB TABLE을 만들지 않더라도 해당 과정이  필요하다.

 

 

5) 관리자 생성

$ python manage.py createsuperuser

Username, Email Address, Password 입력

 

 

6) Runserver

$ python manage.py runserver 0.0.0.0:8000

 

 

 

파이썬 웹 프로그래밍  - 3. Django 웹프레임워크
반응형

'------ Web ------ > Backend' 카테고리의 다른 글

[Django] Form  (0) 2022.07.03
[Django] Template System  (0) 2022.06.28
[Django] Admin  (0) 2022.06.26
[Django] View / Template Coding Overview (실습2)  (0) 2022.06.26
[Django] Model Coding Overview (실습1)  (0) 2022.06.23
Comments