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 또는 커스텀 모듈) 추가
- 템플릿 설정
- 데이터베이스 설정
- 언어 및 시간 설정
- 정적 파일 설정
- 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 |