장고 기본 구조 및 이해

최동혁·2022년 12월 6일
0

Django

목록 보기
1/11

장고 기본 구조 및 이해

장고는 MTV 프레임워크

이름만 다를 뿐, MVC이다.

  • Model → 장고의 Model
    • 데이터베이스 SQL 쿼리를 생성/수행
  • View → 장고의 Template
    • 복잡한 문자열 조합을 도와준다.
  • Controller → 장고의 View
    • HTTP 클라이언트로부터의 요청을 처리하는 함수

기본 생성된 파일/디렉토리 목록

프로젝트명 : 프로젝트명으로 생성된 디렉토리

manage.py : 명령행을 통해 각종 장고 명령을 수행

프로젝트명 : 프로젝트명으로 생성된 디렉토리. 이 이름을 참조하고 있는 코드가 몇 개 있기에 함부로 수정 X

init.py : 모든 파이썬 패키지에는 init.py을 둔다. 패키지를 임포트 할 때의 임포트 대상

settings.py : 현재 프로젝트에서 장고 기본 설정 (django/conf/global_settings.py) 을 덮어쓰고, 새롭게 지정할 설정들

urls.py : 최상위 URL 설정

wsgi.py : 실서비스에서의 웹 서비스 진입점

asgi.py : 비동기 지원

장고 주요 기능들 (1)

  1. Function Based Views : 함수로 HTTP 요청 처리
  2. Models : 데이터베이스와의 인터페이스
  3. Templates : 복잡한 문자열 조합을 보다 용이하게 해준다. 주로 HTML 문자열 조합 목적으로 사용하지만, 푸쉬 메세지나 이메일 내용을 만들 때에도 쓰면 편리하다.
  4. Admin 기초 : 심플한 데이터베이스 레코드 관리 UI
  5. Logging : 다양한 경로로 메세지 로깅
  6. Static files : 개발 목적으로의 정적인 파일 관리
  7. Messages framework : 유저에게 1회성 메세지 노출 목적

장고 주요 기능들 (2)

  1. Class Based Views : 클래스로 함수 기반 뷰 만들기
  2. Forms : 입력폼 생성, 입력값 유효성 검사 및 DB로의 저장
    1. Validators & Fields & Widgets
    2. DRF에서는 Serializer가 Froms와 비슷한 기능을 함.
  3. 테스팅
  4. 국제화 & 지역화
  5. 캐싱
  6. Geographic : DB의 Geo 기능 활용 (PostgreSQL 중심)
  7. Sending Emails
  8. Syndication Feeds (RSS/Atom)
  9. Sitemaps

웹 애플리케이션 기본 구조

클라이언트 사이드와 서버 사이드로 구별이 됨.

웹브라우저가 클라이언트 사이드

  1. 웹 브라우저가 항상 먼저 요청을 함.
  2. Django가 그에 맞는 로직 실행
    1. 데이터베이스로부터 데이터를 가져옴.
    2. 데이터를 넣음.
    3. 데이터를 수정함.
    4. 데이터를 삭제함.
  3. 적절하게 캐시 서버에 세팅, 업데이트 혹은 삭제를 하고 값을 가져옴.
  4. Django가 응답을 받음.
  5. 웹 브라우저에게 응답을 돌려줌.

장고 기본 구조

  1. 웹브라우저의 요청
  2. URLConf에서 URL 별로 호출할 함수를 리스트에 등록
  3. 요청한 URL에 맞춰서 함수가 호출됨.
    1. 함수를 수행할 때 데이터베이스와 interaction이 있으면 SQL을 수행해야함.
    2. 장고 모델을 사용하면 보다 수월하게 interaction 할 수 있다.
  4. 웹 브라우저에게 HTML 문자열 응답을 주려고 한다면 템플릿 엔진을 활용하면 훨씬 수월하게 조합을 할 수 있다.

장고 앱

재사용성을 목적으로한 파이썬 패키지

재사용성을 목적으로 둔 것이 아니라면, 하나의 장고 앱에서 현재 프로젝트의 거의 모든 기능을 구현해도 무방하다. 앱을 하나의 작은 서비스로 봐도 무방하다.

하나의 앱 이름은 현재 프로젝트 상에서 유일해야 한다.

새롭게 생성한 장고앱이나 외부 라이브러리 형태의 장고앱은 필히 settings.INSTALLED_APPS에 등록을 시켜줘야만 장고 앱으로서 대접을 받는다.

애플리케이션의 다양한 데이터 저장 방법

데이터베이스 : RDBMS, NoSQL 등

파일 : 로컬, 외부 정적 스토리지

캐시서버 : memcached, redis 등

profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글