BootCamp/모두의연구소:오름캠프

Django Basic

혼복필 2024. 3. 24. 15:39
728x90
300x250
SMALL

Django의 정리를 약 한 달 만에 진행하게 되었습니다..

밀린 만큼 꼼꼼하고 이해하기 쉽도록 정리해서 추후 제 자신에게 더욱 도움 될 수 있도록 해야겠어요

 

Django

웹 애플리케이션을 개발할 수 있는 무료 오픈 소스 웹 프레임워크

대규모 트래픽에 대응 가능한 성능을 가지고 있으며 자체적으로 제공하는 보안 기능이 뛰어남

보안성이 높은 안정적인 애플리케이션을 만들 수 있음

 

Django 특징

1. ORM (Object-Relational Mapping)

= 데이터베이스와의 상호작용을 자동화하여 개발자가 SQL 쿼리를 작성할 필요 없이 데이터를 편리하게 다룰 수 있음

2. Admin 페이지

= 기본적인 (CRUD, Create-Read-Update-Delete) 기능이 갖춰진 관리자 페이지를 자동으로 생성

3. 보안

= 취약점 테스트를 통해 안정성이 검증된 보안 기능을 제공함

4. MTV 패턴

= Model-Template-View 패턴을 가지고 있으며 기능들을 분리하여 개발할 수 있음

 

Django 구성 요소 (MTV)

 

 

1. Model

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

2. Template

= 사용자에게 보이는 HTML, CSS, JS 등

3. View

= HTTP 요청 처리 및 Model과 Template 연결

 

Django File Structure

Django 메인 폴더(django_project) 안에 django_project , manage.py, apps, templates, static, media, virtual_env로 구성

 

 

Django Project File 

1. settings.py

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

= 프로젝트의 URL 패턴을 포함, URL 패턴은 요청과 응답을 처리하는 View (뷰)와 대응
3. wsgi.py

= 웹 서버에 배포하기 위해 사용하는 파일로 애플리케이션을 실행하기 위한 WSGI 호환 인터페이스를 제공
4. __init__.py

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

5. manage.py

= 프로젝트를 관리할 때 사용하는 커맨드 라인 인터페이스

이 파일을 이용해 데이터베이스 마이그레이션, 애플리케이션 서버 실행 등 다양한 작업을 수행, 프로젝트 폴더의 루트(root) 디렉터리에 위치

 

+ manage.py 작업 수행

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

 

Django Project Folder

1. apps (애플리케이션 폴더)

프로젝트 하위 디렉토리 중 하나로 각 애플리케이션이 위치하는 폴더

apps 폴더 안에는 app 단위로 하위 폴더 구조를 가지게 됨

각 앱의 구조는 독립적이지만 Django에서는 각각의 애플리케이션이 유기적으로 연결

프로젝트 안에는 여러 개의 애플리케이션이 존재할 수 있고 각 애플리케이션들이 연계되어 하나의 Django 프로젝트를 이룸

manage.py 파일을 통해 애플리케이션을 만들 수 있음

각 애플리케이션은 하나의 app을 가지며 기본적으로 동일한 파일들을 가짐

 

1. models.py

= 데이터베이스 모델을 정의하는 파일, 모델은 데이터베이스의 테이블과 같음
2. views.py

= HTTP 요청을 처리하는 view(뷰) 함수를 포함하는 파일, 뷰 함수는 요청을 처리하고 데이터베이스에서 데이터를 검색하거나 템플릿을 랜더링 하여 결과를 반환

3. urls.py

= 애플리케이션의 URL 패턴을 정의하는 파일, 이 URL 패턴은 HTTP 요청을 처리하는 뷰 함수와 연결
4. admin.py

= 애플리케이션의 모델을 관리하는 관리자 페이지를 정의하는 파일, 이 파일을 이용해 애플리케이션의 데이터를 관리하는데 필요한 기능을 정의할 수 있음
5. test.py

= 애플리케이션의 유닛 테스트를 정의하는 파일, 애플리케이션의 기능을 검증하고 버그를 찾아 수정할 수 있음

 

2. migrations (마이그레이션 폴더)

데이터베이스 스키마 변경 내역을 추적하는 도구

마이그레이션은 데이터베이스의 스키마를 변경하는 과정에서 발생하는 문제를 해결하기 위해 고안

마이그레이션 생성 및 적용은 앞서 설명한 manage.py 파일을 이용해서 작업

생성된 마이그레이션 파일은 각 애플리케이션 내에 저장

이 폴더 안에는 데이터베이스 스키마 변경 내역에 관한 .py 파일들이 있음

models.py 파일에서 정의한 데이터베이스 모델의 변경 내역을 저장

마이그레이션 파일은 0001_initial.py와 같은 형식으로 마이그레이션 순서를 나타내는 번호와 이름이 함께 지정

데이터베이스 스키마 변경 시 발생하는 문제를 해결할 수 있으며 애플리케이션의 유지 보수성을 높임

 

1. python manage.py makemigrations

= DB를 만질 수 있는 .py파일을 생성, 그 파일이 0001_initial.py와 같은 파일을 생성

2. python manage.py migrate

= 생성된 0001_initial.py와 같은 파일로 직접 DB를 구축

 

3. templates (템플릿 폴더)

HTML 템플릿 파일을 저장하는 곳

프로젝트 전체에서 사용할 수 있는 템플릿 폴더를 만들 수 있고 각 애플리케이션별로 사용할 템플릿 폴더도 생성

View (뷰)에서 데이터를 처리한 후 이 결과를 HTML 템플릿에 전달하여 사용자에게 동적인 웹 페이지를 보여줌, 이때 사용되는 화면을 생성하는 레이아웃으로 사용

HTML 템플릿은 Django template language를 사용하여 작성, 이를 사용하면 템플릿 내에서 동적으로 데이터를 다룰 수 있음

조건문, 반복문 등의 제어 구문도 사용하는 것 또한 가능

템플릿 기능을 통해 사용자에게 동적인 페이지를 제공할 수 있으며 Django의 유연성과 확장성을 높임

 

4. static (정적 파일 폴더)

정적 파일 (CSS, JavaScript, 이미지)들을 저장하는 곳

프로젝트 전체에서 사용할 수 있고 각 애플리케이션별로 사용할 정적 파일 폴더도 생성할 수 있음

static 폴더에 있는 정적 파일들은 웹 페이지 레이아웃을 구성하거나 프론트엔드 라이브러리를 사용하기 위해 필요한 구성 요소

프로젝트 내에서 STATIC_URL을 설정하게 되면 정적 파일을 서빙할 수 있는 URL을 지정할 수 있음

URL을 통해 HTML 템플릿에서 정적 파일을 참고할 때 사용

일반적으로 STATIC_URL은 /static/과 같이 지정

 

5. media (업로드 파일 폴더)

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

프로젝트 전체에서 사용할 수 있고 각 애플리케이션별로 사용할 업로드 파일 폴더도 생성할 수 있음

프로젝트 내에서 MEDIA_URL 설정을 통해 미디어 파일을 서빙하는 URL을 지정할 수 있음

URL은 HTML 템플릿에서 사용자 업로드 파일을 참조할 때 사용

MEDIA_URL을 설정할 수 있지만 Django 자체에서는 업로드 파일 자체를 서빙할 수 있는 기능을 기본적으로 제공하진 않음

업로드 파일을 서빙하려면 웹 서버 (Apache, NGINX 등)의 설정을 통해 서빙하거나 django.views.static.serve 뷰 함수를 이용해서 서빙

django.views.static.serve 뷰 함수를 이용할 때는 DEBUG=True로 설정되어 있어야 함

 

6. virtual_env (가상환경 폴더)

프로젝트에서 가상환경을 구성할 경우 사용되는 곳

가상환경을 사용해 프로젝트를 구성한다면 Python 패키지들을 독립적으로 관리

프로젝트마다 가상환경을 다르게 구성하면 Python 패키지들을 개별적으로 설치 및 관리할 수 있음

프로젝트 별로 패키지들의 의존성을 관리

 

 

virtual_env는 venv 모듈을 이용해서 가상환경을 구성

가상환경을 생성하면 독립된 개발 환경이 생김

이 가상환경을 사용하려면 활성화(activate, 시작)

가상환경을 활성화시키고 나면 각 프로젝트에 맞는 패키지들을 pip을 통해 관리(설치, 업데이트, 제거 등)할 수 있음

가상환경을 비활성화(deactivate, 종료) 시키면 원래의 로컬 환경으로 돌아옴

728x90
300x250
LIST

'BootCamp > 모두의연구소:오름캠프' 카테고리의 다른 글

Django 실습 1 : 프로젝트 시작  (0) 2024.03.27
Django settings.py  (0) 2024.03.26
24.02.19  (3) 2024.03.05
미니 프로젝트  (0) 2024.02.21
24.02.08  (0) 2024.02.19