Django
The web framework for perfectionists with deadlines.
www.djangoproject.com
web framework
- 웹 프레임워크(web framework)은 웹 서비스 개발 보조용으로 만들어지는 소프트웨어 프레임워크
- 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있다.
Backend
- 백엔드(Backend)는 웹사이트, 애플리케이션 등의 서버 측면을 의미한다.
- 사용자가 직접 보거나 상호 작용하지 않는, 데이터 처리, 저장, 및 애플리케이션의 핵심 기능을 수행하는 부분이다.
- 다음과 같은 언어와 backend framework들이 있으며, 세부적으로 제공하는 기능은 다르나 각각의 역할은 같다.
언어 | 프레임워크 |
Python | Django, FastAPI |
Java | Spring, Spring Boot |
Javascript(Node.js) | Express, NestJS |
MVC 아키텍처 패턴
- 아키텍처 패턴
- 아키텍처 패턴(architectural pattern)은 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책을 의미한다.
- ‘이렇게 해보니까 좋더라’
- M(model)
- 데이터와 비즈니스 로직을 처리
- V(view):
- 사용자 인터페이스 요소
- C(contoller)
- 사용자의 입력과 시스템의 출력을 연결
- Django에서는 MVC 대신 MTV(model, templates, view)라고 한다.
Django 실행하기
가상환경
- 가상 환경(Virtual Environment)은 특정 프로젝트의 의존성을 관리하기 위해 독립된 파이썬 환경을 생성하는 것이다.
- 장점
- 의존성 격리 : 프로젝트마다 서로 다른 라이브러리 또는 동일 라이브러리의 다른 버전을 사용할 수 있도록 한다. 이는 프로젝트 간의 의존성 충돌을 방지하고, 각 프로젝트가 필요로 하는 정확한 라이브러리 버전을 유지할 수 있게 해준다.
- 환경 일관성 유지: 프로젝트를 다른 시스템으로 이전하거나 협업할 때, 해당 프로젝트의 가상 환경을 공유함으로써 모든 개발자가 동일한 환경에서 작업할 수 있다.
- 시스템 보호: 시스템 전역에 라이브러리를 설치하는 것은 종종 관리자 권한을 요구하며, 잘못된 라이브러리 설치는 시스템의 다른 부분에 영향을 줄 수 있다. 가상 환경을 사용하면 시스템 전역 환경을 변경하지 않고도 필요한 라이브러리를 설치할 수 있으므로 시스템을 보호할 수 있다.
- 쉬운 관리와 제거: 가상 환경은 프로젝트 디렉토리 내에 생성되므로, 프로젝트를 삭제할 때 가상 환경을 함께 제거하기 쉽다.
- 생성
$ python -m venv venv
- 활성화
# windows
$ source venv/Scripts/activate
# mac
$ source venv/bin/activate
- 비활성화
deactivate
- 설치한 라이브러리 목록을 저장
$ pip freeze > requirements.txt
- 저장된 라이브러리 목록을 설치
$ pip install -r requirements.txt
gitignore
- .gitignore 파일 안에 정의된 파일/폴더를 git이 관리하지 않도록 한다.
- venv의 경우 파일 용량이 크고, requirements.txt 를 사용하여 모든 정보를 확인할 수 있으므로 무시하는 것이 바람직하다.
- https://gitignore.io/ 를 활용하여 편하게 작성할 수 있다.
설치 및 실행
- 가상환경 생성, 활성화
- 저장된 라이브러리 목록을 설치
$ pip install django
- 설치한 라이브러리 목록 저장(선택)
$ pip freeze > requirements.txt
- 프로젝트 생성
$ django-admin startproject <프로젝트 이름> .
- Django 서버 시작
$ python manage.py runserver

- Application 생성
$ python manage.py startapp <app 이름>
- app 등록
- mysite/settings.py
INSTALLED_APPS = [
"articles",
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
]
요청 / 응답
요청 - 응답의 흐름
- 요청을 받음
- 요청에 대한 처리를 함
- 처리 결과를 응답함
- 요청을 받음
- url을 통해 요청을 받음
- mysite/urls.py
from articles import views
urlpatterns = [
path("admin/", admin.site.urls),
path("articles/", views.data),
]
- 요청에 대한 처리를 함
- articles/views.py
from django.http import HttpResponse
def data(request):
return HttpResponse("here is your response from the server.")
처리 결과를 응답함
"here is your response from the server."
Json으로 응답하기
- mysite/urls.py
from articles import views
urlpatterns = [
path("admin/", admin.site.urls),
path("articles/", views.data),
path("articles/json-data/", views.json_data),
]
- articles/views.py
from django.http import HttpResponse, JsonResponse
def json_data(request):
data = {"name": "Jun", "age": 17, "city": "Seoul"}
return JsonResponse(data)
- json viewer
https://chromewebstore.google.com/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh

'Django' 카테고리의 다른 글
마이그레이션 : 관련 모델이나 필드가 해석되지 못할 때 (0) | 2024.03.19 |
---|---|
Django : backend framework(5) (0) | 2024.03.19 |
Django : backend framework(4) (0) | 2024.03.18 |
Django : backend framework(3) (0) | 2024.03.15 |
Django : backend framework(2) (0) | 2024.03.14 |
Django
The web framework for perfectionists with deadlines.
www.djangoproject.com
web framework
- 웹 프레임워크(web framework)은 웹 서비스 개발 보조용으로 만들어지는 소프트웨어 프레임워크
- 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있다.
Backend
- 백엔드(Backend)는 웹사이트, 애플리케이션 등의 서버 측면을 의미한다.
- 사용자가 직접 보거나 상호 작용하지 않는, 데이터 처리, 저장, 및 애플리케이션의 핵심 기능을 수행하는 부분이다.
- 다음과 같은 언어와 backend framework들이 있으며, 세부적으로 제공하는 기능은 다르나 각각의 역할은 같다.
언어 | 프레임워크 |
Python | Django, FastAPI |
Java | Spring, Spring Boot |
Javascript(Node.js) | Express, NestJS |
MVC 아키텍처 패턴
- 아키텍처 패턴
- 아키텍처 패턴(architectural pattern)은 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책을 의미한다.
- ‘이렇게 해보니까 좋더라’
- M(model)
- 데이터와 비즈니스 로직을 처리
- V(view):
- 사용자 인터페이스 요소
- C(contoller)
- 사용자의 입력과 시스템의 출력을 연결
- Django에서는 MVC 대신 MTV(model, templates, view)라고 한다.
Django 실행하기
가상환경
- 가상 환경(Virtual Environment)은 특정 프로젝트의 의존성을 관리하기 위해 독립된 파이썬 환경을 생성하는 것이다.
- 장점
- 의존성 격리 : 프로젝트마다 서로 다른 라이브러리 또는 동일 라이브러리의 다른 버전을 사용할 수 있도록 한다. 이는 프로젝트 간의 의존성 충돌을 방지하고, 각 프로젝트가 필요로 하는 정확한 라이브러리 버전을 유지할 수 있게 해준다.
- 환경 일관성 유지: 프로젝트를 다른 시스템으로 이전하거나 협업할 때, 해당 프로젝트의 가상 환경을 공유함으로써 모든 개발자가 동일한 환경에서 작업할 수 있다.
- 시스템 보호: 시스템 전역에 라이브러리를 설치하는 것은 종종 관리자 권한을 요구하며, 잘못된 라이브러리 설치는 시스템의 다른 부분에 영향을 줄 수 있다. 가상 환경을 사용하면 시스템 전역 환경을 변경하지 않고도 필요한 라이브러리를 설치할 수 있으므로 시스템을 보호할 수 있다.
- 쉬운 관리와 제거: 가상 환경은 프로젝트 디렉토리 내에 생성되므로, 프로젝트를 삭제할 때 가상 환경을 함께 제거하기 쉽다.
- 생성
$ python -m venv venv
- 활성화
# windows
$ source venv/Scripts/activate
# mac
$ source venv/bin/activate
- 비활성화
deactivate
- 설치한 라이브러리 목록을 저장
$ pip freeze > requirements.txt
- 저장된 라이브러리 목록을 설치
$ pip install -r requirements.txt
gitignore
- .gitignore 파일 안에 정의된 파일/폴더를 git이 관리하지 않도록 한다.
- venv의 경우 파일 용량이 크고, requirements.txt 를 사용하여 모든 정보를 확인할 수 있으므로 무시하는 것이 바람직하다.
- https://gitignore.io/ 를 활용하여 편하게 작성할 수 있다.
설치 및 실행
- 가상환경 생성, 활성화
- 저장된 라이브러리 목록을 설치
$ pip install django
- 설치한 라이브러리 목록 저장(선택)
$ pip freeze > requirements.txt
- 프로젝트 생성
$ django-admin startproject <프로젝트 이름> .
- Django 서버 시작
$ python manage.py runserver

- Application 생성
$ python manage.py startapp <app 이름>
- app 등록
- mysite/settings.py
INSTALLED_APPS = [
"articles",
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
]
요청 / 응답
요청 - 응답의 흐름
- 요청을 받음
- 요청에 대한 처리를 함
- 처리 결과를 응답함
- 요청을 받음
- url을 통해 요청을 받음
- mysite/urls.py
from articles import views
urlpatterns = [
path("admin/", admin.site.urls),
path("articles/", views.data),
]
- 요청에 대한 처리를 함
- articles/views.py
from django.http import HttpResponse
def data(request):
return HttpResponse("here is your response from the server.")
처리 결과를 응답함
"here is your response from the server."
Json으로 응답하기
- mysite/urls.py
from articles import views
urlpatterns = [
path("admin/", admin.site.urls),
path("articles/", views.data),
path("articles/json-data/", views.json_data),
]
- articles/views.py
from django.http import HttpResponse, JsonResponse
def json_data(request):
data = {"name": "Jun", "age": 17, "city": "Seoul"}
return JsonResponse(data)
- json viewer
https://chromewebstore.google.com/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh

'Django' 카테고리의 다른 글
마이그레이션 : 관련 모델이나 필드가 해석되지 못할 때 (0) | 2024.03.19 |
---|---|
Django : backend framework(5) (0) | 2024.03.19 |
Django : backend framework(4) (0) | 2024.03.18 |
Django : backend framework(3) (0) | 2024.03.15 |
Django : backend framework(2) (0) | 2024.03.14 |