Django

Django 란 무엇인가

UserDonghu 2023. 10. 5. 21:59

Django : 파이썬으로 웹 애플리케이션을 개발할 수 있는 무료 오픈 소스 웹 프레임 워크.

 

Django 특징

ORM(object-Relational Mapping) :  데이터베이스와의 상호작용을 자동화해서 개발자가 SQL쿼리를 작성할 필요없이 데이터를 편리학세 다룰 수 있음.

Admin 페이지 : 기본적인 CRUD 기능이 갖춰진 관리자 페이지를 자동으로 생성.

MTV 패턴 : Model-Template-View 패턴을 가지고 있어서 기능들을 분리하여 개발 가능.

 

Django 의 구성 요소 (MTV 패턴)

Model : 데이터베이스와 상호작용을 하는 컴포넌트

Template : 사용자에게 보여지는 HTML, CSS, JS 등

View : HTTP 요청 처리 및 Model과 Template 연결


Django 의 프로젝트 구조

프로젝트는 Django 메인 폴더 안에 django_project, manage.py, apps, templates, static, media, virtual_env 로 구성됨.

 

Django project folder

django로 만들어진 애플리케이션의 기본적인 세팅을 담당하는 파일들로 이루어져 있음.

 

settings.py : 데이터베이스 정보, 설치된 앱, 미들웨어 등 프로젝트의 기본적인 설정 정보를 포함하는 파일

urls.py : 프로젝트의 URL 패턴을 포함. URL 패턴은 요청과 응답을 처리하는 View와 대응됨.

wsgi.py : 웹 서버에 배포하기 위해 사용. 애플리케이션을 실행하기 위한 WSGI 호환 인터페이스 제공.

__init__.py : 이 파일이 존재하는 디렉토리(폴더)가 패키지로 처리되어야 함을 나타내는 파일.

 

manage.py

프로젝트를 관리할 때 사용하는 커맨드 라인 인터페이스. 이 파일을 이용해서 데이터베이스 마이그레이션, 애플리케이션 서버 실행 등 다양한 작업을 수행. 프로젝트 폴더의 root 디렉토리에 위치.

 

Make Migration : 데이터베이스 마이그레이션을 생성하고 적용.

- python manage.py makemigrations

- python manage.py migrate

Run Server : 개발 서버를 실행

- python manage.py runserver

Make Application : 새로운 어플리케이션을 생성

- python manage.py startapp

Make Super User : 프로젝트를 관리하는 슈퍼 유저 생성

- python manage.py createsuperuser

 

apps

애플리케이션 폴더는 프로젝트 하위 디렉토리 중 하나로 각 애플리케이션이 위치하는 폴더. 앱 단위로 하위 폴더 구조를 갖게 되고, 각 앱의 구조는 독립적이지만 Django에서는 각각 앱이 유기적으로 연결됨. manage.py 로 새로운 애플리케이션 만듦.

 

models.py : 데이터베이스 모델을 정의하는 파일. 데이터베이스의 테이블과 같음

views.py : HTTP 요청을 처리하는 view 함수를 포함하는 파일. view 함수는 요청을 처리하고 데이터베이스에서 데이터를 검색하거나 template을 랜더링해서 결과 반환.

urls.py : 애플리케이션의 URL 패턴을 정의. URL 패턴은 HTTP 요청을 처리하는 view 함수와 연결

admin.py : 애플리케이션의 모델을 관리하는 관리자 페이지를 정의.

test.py : 애플리케이션의 유닛 테스트를 정의. 기능을 검증하고 버그를 찾을 수 있음.

 

migrations

데이터베이스 스키마 변경 내역을 추적하는 도구. 마이그레이션 생성 및 적용은 manage.py 파일을 이용해서 작업.

 

templates

HTML 템플릿을 저장하는 곳. View에서 데이터를 처리한 후, HTML 템플릿에 전달해 사용자에게 동적인 웹 페이지를 보여주는데 이때 사용되는 화면을 생성하는 레이아웃으로 사용. Django template language 를 사용하여 작성해 템플릿 내에서 동적으로 데이터를 다룸.

 

static

정적 파일(CSS, JS, 이미지)저장하는 곳. 정적 파일들은 웹 페이지 레이아웃을 구성하거나 프론트엔드 라이브러리를 사용하기 위해 필요한 구성 요소. 

 

media

사용자가 애플리케이션에 업로드한 파일들(이미지, 동영상)을 저장하는 곳. 

 

virtual_env

프로젝트에서 가상환경을 구성하고 사용되는 곳. venv 모듈을 이용해서 가상환경 구성.