Django

django 란 무엇인가? [django]

경상도상남자 2024. 9. 17. 02:30

Web application (web servcie) 개발

  • 인터넷을 통해 사용자에게 제공되는 소프트웨어 프로그램을 구축하는 과정
  • 다양한 디바이스(모바일, 테블릿, PC 등)에서 웹 브라우저를 통해 접근하고 사용할 수 있다.

웹의 동작방식

클라이언트 서버 모델

우리가 컴퓨터 혹은 모바일 기기로 웹 페이지를 보게 될 떄까지 무슨 일이 일어나는지 알아보자

 

웹 서비스에는 크게 두가지의 개념이 있다.

Client (클라이언트)

  • 서비스를 요청하는 주체 (웹 사용자의 인터넷이 연결돤 장치, 웹 브라우저)
  • request

Server(서버)

  • 클라이언트의 요청에 응답하여 데이터를 제공하는 주체 (웹 페이지, 앱을 저장하는 컴퓨터)
  • response

예시)

  1. 웹 브라우저(client)에서 'google.com'을 입력 후 엔터
  2. 웹 브라우저는 인터넷에 연결된 전세계 어딘 가에 있는 구글 컴퓨터(server)에게 '메인 홈페이지.html' 파일을 달라고 요청
  3. 요청 받은 구글 컴퓨터가 데이터베이스에서 '메인 홈페이지.html'파일을 찾아 응답
  4. 웹 브라우저는 전달받은 '메인 홈페이지.html' 파일을 사람이 볼 수 있도록 해석해주고 사용자는 구글 메인페이지를 보게 됨

웹 개발에서의 Frontend 와 Backend

Frontend (프론트엔드)

사용자 인터페이스(UI)를 구성하고, 사용자가 애플리케이션과 상호 작용할 수 있도록 함

  • HTML, CSS, JavaScript, 프론트엔드 프레임 워크 등

Backend(백엔드)

서버 측에서 동작하며, 클라이언트의 요청에 대한 처리와 데이터베이스와의 상호작용 등을 담당

  • 서버 언어(Python, Java 등) 및 백엔드 프레임워크, 데이터베이스, API, 보안

Web Framework

웹 서비스 개발에는 로그인/로그아웃, 회원관리, 보안, 데이터 베이스 등 많은 기술이 필요한데, 모든 기능을 직접 개발하기에는 현실적으로 어려움이 존재 한다. 따라서 웹 프레임워크를 이용해서 웹을 개발을 쉽게 할 수 있다.

 

웹 애플리케이션을 빠르게 개발할 수 있도록 도와주는 도구 (개발에 필요한 기본 구조, 규칙, 라이브러리등을 제공)

 

Django 란?

파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크

대규모 트래픽 서비스에서도 안정적인 서비스를 제공하고, Spotify, instagram, dropbox, delivery hero 등 세계 최대 규모의 소프트웨어 회사에서도 장고를 사용하고 있다.

django의 장점

1. 다양성

  • python 기반으로 웹, 모바일 앱 백엔드, API 서버 및 빅데이터 관리 등 광범위한 서비스 개발에 적합

2. 확장성

  • 대량의 데이터에 대해 빠르고 유연하게 확장할 수 있는 기능을 제공

3. 보안

  • 취약점으로부터 보호하는 보안 기능이 기본적으로 내장되어 있음

4. 커뮤니티 지원

  • 개발자를 위한 지원, 문서 및 업데이트를 제공하는 활성화된 커뮤니티

 

Django의 디자인 패턴

MVC 패턴

MVC 디자인 패턴

애플리케이션을 구조화하는 대표적인 패턴 (Model, view, controller)

데이터, 사용자 인터페이스, 비지니스 로직을 분리

  • 시각적 요소와 뒤에서 실행되는 로직을 서로 영향없이, 독립적이고 쉽게 유지 보수할 수 있는 애플리케이션을 만들기위해

 

MVT 패턴

Django는 MVT 디자인 패턴을 따른다(Model, Template, View).

애플리케이션을 구조화하는 대표적인 패턴인 MVC 디자인 패턴과 명칭만 다를뿐 거의 동일하다.(Model(데이터), View(사용자 인터페이스), Controller(비지니스로직))

Django에서 Template = MVC에서 View

Django에서 View = MVC에서 Controller

- MVT 패턴을 사용하는 이유

  • 시각적 요소와 뒤에서 실행되는 로직이 서로 영향 없이 독립적이고 쉽게 유지 보수할 수 있는 애플리케이션을 만들기 위해 사용

- 디자인 패턴이란?

  • 소프트웨어 설계에서 발생하는 문제를 해결하기 위한 일반적인 해결책 (공통적인 문제를 해결하는데 쓰이는 형식화 된 관행)

Model

애플리케이션의 데이터와 정보. 사용자 인터페이스와 데이터베이스를 연결하고 데이터 유지관리를 담당

View(Controller)

데이터와 사용자 인터페이스를 이어주는 다리역할을 수행한다. 사용자가 접근한 URL에 따라 요청을 파악하고 적절한 Method를 호출하여 Service에서 비지니스 로직을 처리한다. 이 후 결과를 Model에 저장하여 View에게 전달하는 역할을 수앻한다. Model과 View의 역할을 분리하는 요소

Controller가 가지는 규칙

  1. Model이나 View에 대해서 알고 있어야 한다.
  2. Model이나 View의 변경을 모니터링 해야 한다.

Template(View)

입력값이나 체크박스 등과 같은 사용자 인터페이스 요소

Controller에게 받은 Model의 데이터를 사용자에게 시각적으로 보여주기 위한 역할을 수행한다.

View가 가지는 규칙

  1. Model이 가지고 있는 정보를 따로 저장해서는 안된다.
  2. Model이나 Controller를 알고 있을 필요가 없다.
  3. 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다.

 

 

 

참고자료 출처

https://velog.io/@langoustine/%EC%97%AC%EA%B8%B0%EB%8F%84-MVC-%EC%A0%80%EA%B8%B0%EB%8F%84-MVC-MVC-%ED%8C%A8%ED%84%B4%EC%9D%B4-%EB%AD%90%EC%95%BC

'Django' 카테고리의 다른 글

Django Form [Django]  (0) 2024.09.25
Django ORM with view [Django]  (0) 2024.09.24
Django ORM [Django]  (3) 2024.09.23
Django Model 생성하기[Django]  (0) 2024.09.23
Django 프로젝트 생성하기 [Django]  (1) 2024.09.18