본문 바로가기

Back-end & Server/Django

[Django] Django 시작하기

728x90
반응형

개요

장고는 파이썬으로 작성된 오픈소스 웹 프레임워크로, MTV(모델-템플릿-뷰) 패턴을 따르고 있음

목표

  • 고도의 데이터베이스 기반 웹 사이트를 작성하는 데 있어 수고를 더는 것

 

특징

  • 컴포넌트의 재사용성
  • 플러그인화 가능성
  • 빠른 개발 등을 강조
  • DRY(Don't repeat yourself: 중복 배제) 원리

사용 예시 - 인스타그램, NASA, 빗버킷, 모질라 등

 

환경 설정

1. 파이썬 설치 

  • 파이썬은 3.x 버전 이상으로 설치하면 됨

 

2. 파이썬 가상환경 설치

  • 파이썬에서 패키지별로 지원하는 파이썬 버전이 틀려 문제(호환성 문제)가 발생할 수 있음
    • 가상환경을 통해 독립된 디렉토리 내에서 설정한 파이썬 버전 환경에서 프로젝트 작업을 수행 할 수 있음
  • 1. 파이썬의 가상환경 도구인 virtualenv를 pip를 통해 설치 (공식문서 -> https://virtualenv.pypa.io/en/latest/)
// 터미널 환경
pip install virtualenv
// 또는 pip3 install virtualenv
  • 2. 가상환경 설치
// 가상환경을 만들고자 하는 경로로 접근
cd 가상환경을 만들고자 하는 경로
// 생성
virtualenv 가상환경 이름
// --python=x.x 옵션으로 버전을 선택할 수 있음
/* Python 3.3 부터 venv 모듈을 통해 가상환경을 만들 수 있음
   - venv는 virtualenv의 경량화 버전(특정 기능 지원하지 않음)으로 따로 설치할 필요 없는 기본 라이브러리임
   - virtualenv보다 느린 속도 등의 특징을 가짐
*/

// 터미널 환경
python -m venv 가상환경 디렉토리 이름
venv 가상환경 디렉토리 이름
// "py -x.x -m venv 가상환경 디렉토리 이름"으로 버전 선택
  • 3. 가상환경 활성화
// 가상환경이 설치된 디렉토리로 접근
cd 가상환경 디렉토리
// 활성화 - Linux/Mac OS
source 가상환경 이름/bin/activate
// 활성화 - Windows
.\가상환경 이름\Scripts\activate

  • 이렇게 활성화된 상태가 되면 이제 사용하면 됨
    • pip를 통해 패키지 설치시 가상환경 내에만 패키지가 설치됨

 

Django 설치

  • pip를 통해 Django를 설치
pip install django
pip3 install django
// pip install django==x.x.x 으로 버전 선택 가능
  • 설치 확인
// 터미널
python
// 파이썬 인터프리터 실행
import django
django.get_version()

  • 프로젝트 만들기
// 프로젝트를 만들 디렉토리 위치로 이동 후
django-admin startproject 프로젝트 이름

  • mange.py
    • Django를 실행하는 관리자 기능을 담당
    • 기본적으로 Django를 실행하는데 필요한 진입점
    • 기능
      • 장고 실행 - runserver
      • 앱 프로젝트 생성 - startapp
      • 데이터베이스 생성 - makemigrations, migrate
      • 관리자 계정 생성 - createsuperuser

 

  • 내부 mysite 디렉토리
    • 프로젝트를 위한 파일들을 담고 있음

 

  • __init__.py
    • 웹 프로젝트 디렉토리가 파이썬 모듈로 인식되게하는 파일

 

  • asgi.py
    • ASGI(Asynchronous Server Gate Interface)를 담당하는 파일
    • WSGI의 상위 호환(WSGI의 문제점 보완, 비동기 및 동기 기능의 표준 제공)
    • 웹 서버와 프레임워크(Django), 애플리케이션을 연결해주는 Python 표준 인터페이스
    • 서버에서 장고를 실행할 때 사용(배포)

 

  • settings.py
    • django의 설정을 담당
    • 개발모드 설정
    • app(pip 또는 커스텀 모듈) 추가
    • 템플릿 설정
    • 데이터베이스 설정
    • 언어 및 시간 설정
    • 정적 파일 설정

settings.py 내용
settings.py 내용

  • urls.py
    • 웹 접근시 이용하는 URL를 정의하는 파일

 

  • wsgi.py
    • WSGI(Web Server Gateway Interface)
    • ASGI 이전 표준
    • 서버에서 장고를 실행할 때 사용(배포)

 

  • 마이그레이션하기 
    • settings.py의 INSTALLED_APPS에 설정된 App들은 적어도 하나 이상의 데이터베이스 테이블을 사용하기 때문에 테이블을 만들어야 함
    • migrate 명령으로 테이블을 생성
      • INSTALLED_APPS의 설정을 보고 settings.py 파일의 데이터베이스 설정 및 앱과 함께 제공되는 데이터베이스 마이그레션에 따라 필요한 데이터베이스 테이블을 생성함
// 터미널에서 django 프로젝트 root 디렉토리로 이동
python manage.py migrate

  • 서버 실행
python manage.py runserver
// "python manage.py runserver 포트 번호"로 원하는 포트로 개발 서버를 띄울 수 있음

 

MTV(Model-Template-View) 패턴

MTV란 MVC에 대응되는 Django의 디자인 패턴임

 

MVC(Model-View-Control)

  • Model
    • 데이터를 가지고 있으며, 데이터를 처리하는 로직 또한 소유

 

  • View
    • 화면에 요청에 대한 결과물을 보여주는 역할
    • 유저와 어플리케이션 간의 인터페이스

 

  • Control
    • 모델과 뷰를 이어주는 역할
    • 요청에 따라 모델에 적절한 로직을 가동하도록 알려주고 모델이 응답하면 그 응답을 뷰에 전달하는 역할

 

  • 장점
    • 유연성이 높음
    • 유지보수가 용이
    • 개발자와 디자이너의 작업 영역을 분리할 수 있음

 

  • 한계
    • 프로젝트 규모가 커질수록 컨트롤러가 비대화됨
    • 모델과 뷰의 의존성을 완벽히 분리할 수 없음 -> 유지보수가 점점 어려워짐

 

MTV 패턴

  • 기본적인 골자는 MVC 패턴과 동일하나 MTV만의 특징이 있음
  • Model
    • DB에 저장되는 데이터
    • 클래스로 정의되며 하나의 클래스가 하나의 DB Table
    • Django는 ORM(Object Relational Mapping) 기능을 지원하기 때문에 SQL을 몰라도 파이썬 코드로 DB조작 가능

 

  • Template
    • 유저에게 보여지는 화면
    • Django는 뷰에서 로직을 처리한 후 HTML 파일을 context와 함께 렌더링함 -> 이 때 HTML 파일을 템플릿이라고 함
    • Django는 자체적인 Django Template 문법을 지원 -> html 파일 내에서 context로 받은 데이터를 활용할 수 있음

 

  • View
    • 요청에 따라 적절한 로직을 수행하여 결과를 템플릿으로 렌더링하여 응답
    • 항상 템플릿을 렌더링하는 것은 아니고 백엔드에서 데이터만 주고 받는 경우도 있음

 

  • URLConf(URL 설계) 단계
    • URL 패턴을 정의하여 해당 URL과 뷰를 매핑하는 단계
    • path 함수를 이용해 URL을 뷰와 손쉽게 매핑 시킬 수 있음
728x90
반응형

'Back-end & Server > Django' 카테고리의 다른 글

[Django] 폼(Form)  (0) 2023.01.20
[Django] Admin 사이트  (0) 2023.01.16
[Django] 모델  (0) 2023.01.16
[Django] 템플릿  (0) 2023.01.01
[Django] 뷰와 URLconfs  (0) 2022.12.28