상세 컨텐츠

본문 제목

[파이썬 웹 프로그래밍] #1. 장고(Django) 란?

IT/Django

by HarimKang 2020. 5. 19. 20:23

본문

Writer: Harim Kang

'파이썬 웹 프로그래밍(실전편)'을 공부하면서 정리한 글입니다. 책에서는 리눅스 환경에서 진행하지만 저는 윈도우 환경에서 실습을 따라가 보겠습니다. Windows 10 OS환경 이지만 해당 책을 공부하고 싶은 분들에게 도움을 드리고 싶습니다.

장고(Django)란?

파이썬을 통해 쉽고 빠른 웹 프로그래밍을 가능하게 하는 프레임워크입니다.

https://docs.djangoproject.com/ko/3.0/intro/overview/

 

Django 훑어보기 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

MVT 개발

장고는 MVT(Model-View-Template) 방식으로 3가지 개념으로 나누어서 개발합니다. 테이블을 정의하는 Model, 어플리케이션 제어 흐름 및 처리 로직을 정의하는 View, 사용자가 보게 될 화면의 모습을 정의하는 Template으로 구분하여 개발을 진행합니다. 분리하는 잉는 모듈 간의 독립성을 유지할 수 있기 때문입니다.

장고 개발 순서

  1. 프로젝트 생성: startproject 또는 startapp 명령어를 통해 자동으로 디렉터리와 파일들을 만들어줍니다.
  2. Model 코딩: 테이블 관련 사항을 구현합니다. (models.py, admin.py)
  3. URLconf 코딩: URL 및 뷰 매핑 관계 정의 (urls.py)
  4. View 코딩: 애플리케이션 로직 개발(views.py)
  5. Template 코딩: 화면 UI 개발(templates 디렉토리의 html 파일들)

위의 순서가 일반적인 클래스형 뷰 사용 개발시 순서입니다. View-Template순서는 바뀔 수 있습니다.

주요 사항

settings.py

프로젝트 설정 파일입니다. 기본적인 것들은 이미 포함이 된 상태로 생성되며, 추가적인 것들은 아래의 것들입니다. 직접 작성하면 됩니다.

  • DB 설정: Default로는 SQLite3, MySQL 또는 Oracle 등으로 변경시 수정이 필요합니다.
  • Application 등록: Project의 모든 Application을 등록
  • TEMPLATES 지정
  • 정적 파일 항목 설정: STATIC_URL등 지정
  • 타임존 지정: Default는 UTC(세계표준시)이며, 한국 시간으로 변경해줄 수 있습니다.

파일에 django.contrib.auth 앱이 기본적으로 등록되어 있어서, Admin Site에서 기본적인 User와 Group 테이블을 볼 수 있습니다.

models.py

테이블을 정의하는 파일입니다. DB처리의 경우, ORM(Object Relational Mapping) 기법을 사용합니다. ORM이란, 테이블을 클래스로 매핑하여 테이블에 대한 CRUD를 클래스 객체에 대해 수행하면, 장고가 알아서 DB에 반영해주는 것을 의미합니다.

테이블 클래스는 django.db.models.Model 클래스를 상속받아서 정의하며, 변수 타입 또한 장고에서 정의해놓은 필드 클래스를 사용합니다.

장고는 마이그레이션(Migrations)란 개념을 도입하여 테이블 및 필드 생성, 삭제, 변경 등과 같은 변경 사항을 알려주는 정보를 제공합니다. 애플리케이션 디렉토리 별로 migration/이라는 디렉토리에 마이그레이션 파일들이 존재합니다. 마이그레이션 정보를 추출하는 makemigrations 와 DB에 변경사항을 반영하는 migrate 명령을 제공합니다.

urls.py

URLconf는 URL과 뷰를 매핑해주는 것을 의미합니다. 이것을 정의할 때는 프로젝트 전체의 URL을 정의하는 프로젝트 URL과 앱마다 정의하는 앱URL로 나누어서 구현합니다. 모듈을 계층적으로 구성하여 변경이 쉽고 확장을 용이하도록 합니다. 또한 URL 패턴별로 이름을 지정할 수 있고, 그룹에 대해 namespace를 지정할 수 있습니다. reverse() 함수나 {% url %} 태그를 사용하여 URL을 추출할 수 있습니다.

views.py

뷰 로직을 코딩하는 파일입니다. 가독성과 유지보수 편리성, 재활용성 등을 고려해야합니다. 장고에서는 두가지 방식의 뷰 로직 구성이 있습니다.

  1. 함수형 뷰(Function-based view): 뷰 로직을 함수로 코딩합니다.
  2. 클래스형 뷰(Class-based view): 뷰 로직을 클래스로 코딩합니다.

장고에서는 뷰 작성에 편리한 기능을 제공합니다. 대표적인 기능으로는 아래와 같은 기능을 제공합니다.

  • 단축 함수 및 클래스 형 제네릭 뷰

Templates

웹 페이지 별로 Template file(html)이 하나씩 필요합니다. 여러 개의 템플릿 파일을 작성하여야하고, 이 파일들을 디렉토리에 모아둡니다. 템플릿은 아래와 같이 구분하여 사용합니다.

  • 프로젝트 템플릿 디렉토리
    • TEMPLATES 설정의 DIRS 항목에 지정된 디렉토리입니다.
    • base.html 등 전체 프로젝트와 관련된 파일들을 모아둡니다.
  • 앱 템플릿 디렉토리
    • 각 앱마다 존재하는 templates/ 를 의미합니다.
    • 각 앱에서 사용하는 템플릿 파일들이 위치합니다.

Admin Site

Admin site는 테이블의 내용(Contents)을 열람하고 수정(편집)하는 기능을 제공합니다. 해당 사이트에서 User와 Group을 포함한 다양한 테이블에 대한 데이터의 입력, 수정, 삭제 등의 작업을 합니다. 또한, Admin 사이트에 원하는 테이블을 등록하기 위해서 admin.py에 작업을 하면 됩니다.

runserver(개발용 웹 서버)

개발 과정에서 현재의 프로그램을 실행해볼 수 있도록 runserver라는 테스트용 웹 서버를 제공합니다. runserver가 실행 중인 상태에서 수정이 있으면 자동으로 반영되어 재기동됩니다. 실제 사용화하기 위해서는 Apache 또는 Nginx 등의 상용 웹 서버가 필요합니다. runserver는 상용 서버에 비해 능력과 보안이 좋지 않습니다.

가상 환경 준비

파이썬에서 제공하는 venv 모듈(python 3 버전)을 통해서 가상 환경을 만들어서 진행합니다. 가상 환경은 라이브러리 충돌을 방지하기 위해 사용합니다.

# Window 10 기준 입니다.
# 개발하고자 하는 폴더에 가서 cmd를 켭니다.
D:\dev\Source\django> mkdir VENV
D:\dev\Source\django> cd VENV/

# 가상환경을 만듭니다. [가상 환경]에서는 가상 환경이름을 넣어줍니다.
D:\dev\Source\django\VENV> python -m venv [가상 환경]
D:\dev\Source\django\VENV> cd [가상 환경]
D:\dev\Source\django\VENV\[가상 환경]> .\Scripts\activate.bat

# Django 설치
(가상 환경) D:\dev\Source\django\VENV\[가상 환경]> pip install Django

# 설치된 패키지 리스트 확인
(가상 환경) D:\dev\Source\django\VENV\[가상 환경]> pip list

"""
Package    Version
---------- -------
asgiref    3.2.7
Django     3.0.6
pip        20.1
pytz       2020.1
setuptools 40.8.0
sqlparse   0.3.1
"""

여러 패키지 설치

장고에서 사용 가능한 패키지들은 아주 많습니다. 아래의 사이트에서 찾아볼 수 있습니다.

필요시 마다 pip를 사용하여 설치해주면 됩니다.

# 패키지 설치
(가상 환경) D:\dev\Source\django\VENV\[가상 환경]> pip install [패키지 이름]

# requirement 작성 - 패키지들을 requirement.txt에 작성
(가상 환경) D:\dev\Source\django\VENV\[가상 환경]> pip freeze > requirement.txt

'IT > Django' 카테고리의 다른 글

[파이썬 웹 프로그래밍] #2. 간단한 Project 시작  (0) 2020.06.15

관련글 더보기

댓글 영역