240328 Django 1st Step 백엔드 위키

송용진·2024년 3월 28일

Django의 필요성 및 특징

Django는 Python으로 작성된 고급 웹 프레임워크

  • 빠른 개발 :
    웹 개발 시 필요한 대부분의 기능을 내장하고 있어 빠르게 웹 애플리케이션 개발 가능
    배터리가 포함된?
    Django가 웹 개발을 시작할 때 필요한 대부분의 기능을 내장하고 있어
    별도로 추가적인 구성요소를 찾아 설치할 필요가 적다는 의미
  • DRY 원칙 :
    Don't Repeat Yourself(반복을 피하라)
    코드의 중복 최소화, 재사용성 극대화
  • 보안 :
    Django는 보안을 매우 중요시하며,
    여러 보안 이슈를 자동으로 관리해줌
    Django의 보안 지원
    Django는 웹 애플리케이션을 개발할 때
    보안에 관한 다양한 문제를 해결하기 위해 여러 보안 기능과 메커니즘을 제공
  1. Cross Site Scripting (XSS) 방어
  2. Cross Site Request Forgery (CSRF) 방어
  3. SQL Injection (SQLi) 방어
  4. Clickjacking 방어
  5. SSL/HTTPS
  6. 세션 보안
  7. 비밀번호 관리
  8. User Input Sanitization
  • 확장성
    소규모 프로젝트부터 대규모 어플리케이션까지
    Django는 뛰어난 확장성을 제공
  • 다양한 기능
    Django는 관리자 인터페이스,
    ORM (Object-Relational Mapping),
    템플릿 시스템,
    캐싱,
    인증 시스템 등
    개발에 필요한 다양한 기능을 내장

장단점

장점:

  1. 개발 속도 :
    Django의 다양한 기능과 컴포넌트 덕분에 개발 시간을 크게 단축
  2. 보안 :
    기본 설정만으로도 상당수의 보안 위협으로부터 보호받을 수 있음
  3. 문서화 :
    Django는 훌륭하게 문서화되어 있어, 학습과 참조가 용이
  4. 커뮤니티 및 지원 :
    활발한 커뮤니티와 다양한 외부 라이브러리

단점:

모놀리식 구조 :
Django는 모놀리식 프레임워크
(모놀리식 구조는 전체 애플리케이션의 기능이 단일, 통합된 코드베이스 내에서 구현되는 개발 방식)
마이크로서비스 아키텍처를 구현하기 어려울 수 있음
(마이크로서비스 아키텍처는
소프트웨어를 작은 독립적인 서비스로 분해하여 개발하고 배포하는 아키텍처로,
유연성과 확장성을 높이며 개발 및 유지보수를 단순화)

  • 통합된 코드베이스
  • 간단한 개발 및 배포 과정
  • 단일 언어 및 프레임워크 사용
  1. 비동기 처리
    최근 버전에서는 개선 중
    (비동기 처리는 작업을 동시에 실행하여 대기 시간을 최소화하고
    시스템의 효율성을 높이는 방식으로,
    작업이 완료될 때까지 기다리지 않고 다른 작업을 수행하는 것을 의미)
  2. 학습 곡선
    Django의 다양한 기능과 원칙을 익히는데 시간이 필요

한계

  • 유연성의 제한 : Django의 고유한 방식을 따르지 않는 경우, 유연성이 제한될 수 있음
  • 성능 이슈 : Django는 고성능을 요구하는 애플리케이션에 비해 상대적으로 느릴 수 있음
  • 마이크로서비스에 부적합 :
    간단한 마이크로서비스를 구축하는 경우,
    Django는 과도하게 무거울 수 있음

결론

Django는 많은 장점을 제공하는 강력한 웹 개발 프레임워크

Django로 개발된 웹사이트 예시

  • Instagram 
  • Disqus : 댓글 플랫폼, 백엔드로 Django를 사용
  • Mozilla
  • Pinterest
  • Bitbucket : Git 저장소 호스팅 서비스,
    Django를 사용하여 사용자들이 코드를 협업하고 저장소를 관리할 수 있는 웹 애플리케이션을 제공
  • (토스의 사내 시스템)

Django MVT 패턴
모델-뷰-템플릿 (Model-View-Template, MVT)
전통적인 컨트롤러의 역할이 뷰에서 수행
전통적인 뷰의 역할이 템플릿에서 수행

모델 (Model)

애플리케이션의 데이터 구조를 정의하며, 데이터베이스와의 상호작용을 처리

뷰 (View)

애플리케이션의 비즈니스 로직을 처리

템플릿 (Template)

사용자에게 보여질 최종 HTML 응답을 생성하는 데 사용됨

MVC와의 차이점

전통적인 MVC 패턴에서는
컨트롤러가 사용자의 요청을 받아 모델을 통해 데이터를 처리하고,
뷰를 통해 그 결과를 사용자에게 전달하는 구조

Django 시작하기

  • installation
  • Tutorial Site
...\> py -m django --version
  • 프로젝트 만들기
...\> django-admin startproject mysite

생성되는 파일 살펴보기
manage.py : Django 프로젝트를 위한 커맨드라인 유틸리티
__init__.py : 해당 디렉토리를 Python 패키지로 처리
settings.py : 프로젝트의 설정을 담당하는 파일
urls.py : 프로젝트의 URL 선언을 관리
asgi.py : 비동기 서버 게이트웨이 인터페이스(ASGI) 설정 파일
wsgi.py : 웹 서버 게이트웨이 인터페이스(WSGI) 설정 파일

...\> py manage.py runserver
  • 실습 문제
  • 설문조사 앱 만들기 진행
...\> py manage.py startapp polls

polls/views.py

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

polls/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path("", views.index, name="index"),
]

mysite/urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("polls/", include("polls.urls")),
    path("admin/", admin.site.urls),
]
profile
개발자

0개의 댓글