클라이언트 (Client)
- 서비스를 요청하는 주체
- 웹 사용자의 인터넷이 연결된 장치
- 웹 브라우저
서버 (Server)
- 클라이언트의 요청에 응답하는 주체
- 앱을 저장하는 컴퓨터
- 웹 페이지
가상 환경
- Python 애플리케이션과 그에 따른 패키지들을 격리하여 관리할 수 있는 독립적인 실행 환경
Django 프로젝트 생성 전 루틴(1~4) + git(5~7)
- 가상환경(venv) 생성 :
python -m venv venv
- 가상환경 활성화 :
source venv/Scripts/activate
- Django 설치 :
pip install Django
- 의존성 패키지 파일 생성 :
pip freeze > requirements.txt
- .gitignore 파일 생성 (첫 add 전)
- git 저장소 생성
- Djgnao 프로젝트 생성
가상환경 사용 이유
- 의존성 관리
- 라이브러리 및 패키지를 각 프로젝트마다 독립적으로 사용 가능
- 팀 프로젝트 협업
- 모든 팀원이 동일한 환경과 의존성 위에서 작업하여 버전 간 충돌을 방지
LTS (Long-Term Support)
- 프레임워크나 라이브러리 등의 소프트웨어에서 장기간 지원되는 안정적인 버전을 의미할 때 사용
- 기업이나 대규모 프로젝트에서는 소프트웨어 업그레이드에 많은 비용과 시간이 필요하기 때문에 안정적이고 장기간 지원되는 버전이 필요
Django Project
- 애플리케이션의 집합
- DB 설정, URL 연결, 전체 앱 설정 등
Django Application
- 독립적으로 작동하는 기능 단위 모듈
- 각자 특정한 기능을 담당하며, 다른 앱들과 함께 하나의 프로젝트를 구성
디자인 패턴
- 소프트웨어 설계에서 발생하는 문제를 해결하기 위한 일반적인 해결책
- 공통적인 문제를 해결하는데 쓰이는 형식화된 관행
MVC 디자인 패턴
- Model, View, Controller
- 애플리케이션을 구조화하는 대표적인 패턴
- 데이터, 사용자 인터페이스, 비즈니스 로직을 분리
- 시각적 요소와 뒤에서 실행되는 로직을 서로 영향 없이, 독립적이고 쉽게 유지 보수할 수 있는 애플리케이션을 만들기 위함
MTV 디자인 패턴
- Model, Template, View
- Django에서 애플리케이션을 구조화하는 패턴
- 기존 MVC 패턴과 동일하나, 명칭을 다르게 정의한 것
- 기존 MVC 패턴에서 View → Template, Controller → View
- Model
- 데이터와 관련된 로직을 관리
- 응용프로그램의 데이터 구조를 정의하고, 데이터베이스의 기록을 관리
- Template
- 레이아웃과 화면을 처리
- 화면상의 사용자 인터페이스 구조와 레이아웃을 정의
- View
- Model & Template과 관련한 로직을 처리해서 응답을 반환
- 클라이언트의 요청에 따라 처리를 분기하는 역할
프로젝트 구조
- settings.py
- urls.py
- URL과 이에 해당하는 적절한 views를 연결
- init.py
- asgi.py
- wsgi.py
- manage.py
- Django 프로젝트와 다양한 방법으로 상호작용하는 커맨드라인 유틸리티
앱 구조
- admin.py
- models.py
- DB와 관련된 Model을 정의
- MTV 패턴의 M
- views.py
- HTTP 요청을 처리하고 해당 요청에 대한 응답을 반환
- url, mode, template과 연계
- MTV 패턴의 V
- apps.py
- tests.py
요청과 응답
🔮 URLs
from django.contrib import admin
from django.urls import path
from articles import views
urlpatterns = [
path('admin/', admin.site.urls),
path('articles/', views.index),
]
🔮 View
- 특정 경로에 있는 template과 request 객체를 결합하여 응답 객체를 반환하는 index view 함수를 정의
- 모든 view 함수는 첫 번째 인자로 request(요청) 객체를 필수적으로 받음
🔮 Template
- 폴더명은 반드시 templates 여야 하며, 개발자가 직접 생성해야 함
데이터 흐름에 따른 코드 작성
render 함수
- 주어진 템플릿을 주어진 컨텍스트 데이터와 결합하고, 렌더링된 텍스트와 함께 HttpResponse(응답) 객체를 반환하는 함수
render(request, template_name, context)
- request : 응답을 생성하는 데 사용되는 요청 객체
- template_name : 템플릿 이름의 경로
- context : 템플릿에서 사용할 데이터 (딕셔너리 타입으로 작성)