Web/django

00_django intro, 장고 소개하기

csmoon 2021. 9. 5. 16:10

장고란 무엇인가?

Django는 파이썬 기반의 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework)이다.

쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크다.

 

프레임워크(Framework)

웹사이트를 구축할 때, 비슷한 유형의 요소(빈번하게 반복적인 문제를 해결)들이 항상 필요하다.

(→회원가입, 로그인/로그아웃 등의 사용자 인증 및 관리 문제, 자료의 업로드/다운로드 등)

이러한 기능들을 바로 사용할 수 있도록 구성요소들을 갖춘 편리한 개발환경을 만들어 놓은 것이 바로 프레임워크이다.

이는 매번 다시 발명해야 하는 문제로부터 해방감을 주고, 웹사이트를 개발할 때 뒤따르는 간접비용의 부담을 덜어준다.

 

장고의 특징

장점

  1. 비교적 쉬운 언어인 Python을 기반으로 두기 때문에 익히기 쉽다.
  2. 익히기 쉬운 만큼 개발속도도 빠르고, 코드 완성도를 높게 유지할 수 있으며 확장성도 좋다.
  3. 웹 애플리케이션이 제공되어야하는 사용자 인증, 사용자 관리 등을 기본적으로 기능 구현이 되어 있다.
  4. 성공적인 도입 사례가 많다. (대표적으로 Instagram)
  5. 개발 비용을 절감시킬 수 있다.

단점

  1. 비교적 쉬운 언어이지만, 객체 지향 프로그램인 Python을 사용하기 위해 객체 지향 프로그램에 대한 전반적인 이해가 필요하다.
  2. Python의 단점을 대부분 포함한다.
  3. 성능이 다른 웹 애플리케이션 프레임워크(Node.js 등)보다 좋지 못하다.

 

디자인 패턴

웹을 설계하면서 발생하는 문제를 해결 또는 문제발생을 방지하기 위해 만들어진 표준화된 메뉴얼

기능별로 분리시켜 상호의존성을 없앰으로써 개발 및 유지보수 시 부작용을 최소화시켰다.

 

MVC Pattern(Model-View-Controller)

소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴 중 하나

사용자가 Controller를 조작하면, Controller는 Model을 통해 데이터를 가져온다.

가져온 데이터를 View를 통해 사용자에게 전달한다.

 

MTV Pattern(Model-Template-View)

Python의 Django 프레임워크에서 사용하는 디자인 패턴

  • Model
    • 응용프로그램의 데이터 구조를 정의하고 데이터베이스의 기록 관리(추가 / 수정 / 삭제)
    • 데이터베이스에 저장되는 데이터를 CRUD 하는 부분

 

  • Template
    • 파일의 구조나 레이아웃을 정의
    • 실제 내용을 보여주는데 사용(presentation)

 

  • View
    • HTTP 요청을 수신하고 HTTP 응답을 반환
    • Model을 통해 요청을 충족시키는데 필요한 데이터에 접근
    • Template에게 응답의 서식 설정을 맡긴다.

 

MTV 처리과정

URLs : URL mapper(보통 urls.py라는 이름의 파일에 저장)는 요청 URL을 기준으로 HTTP 요청을 적절한 뷰(View)로 보내주기 위해 사용된다. 또한 URL mapper는 URL에 나타나는 특정한 문자열이나 숫자의 패턴을 일치시켜 데이터로서 뷰 함수에 전달할 수 있다. URL 분석 결과를 통해 해당 URL 에 대한 처리를 담당할 뷰를 결정(URLconf에서 URL분석 후 해당 매핑되는 뷰를 호출)

View:(View)는 HTTP 요청을 수신하고 HTTP 응답을 반환하는 요청 처리 함수이다. 자신의 로직을 실행 하면서 만일 데이터 베이스 처리가 필요하면 해당 모델(Model)에 요청하고 그 결과를 반환받는다. 그리고 탬플릿(Template)에게 응답의 서식 설정을 맡긴다.

Models: 모델(Model)은 응용프로그램의 데이터 구조를 정의하고 데이터베이스의 기록을 관리(추가, 수정, 삭제)하고 쿼리하는 방법을 제공하는 파이썬 객체이다.

Templates: 탬플릿(Template)은 파일의 구조나 레이아웃을 정의하고, 실제 내용을 보여주는 데 사용되는 플레이스홀더를 가진 파일이다. 뷰는 html 탬플릿을 이용하여 동적으로 html페이지를 만들고 모델에서 가져온 데이터로 채운다. 탬플릿으로 모든 파일의 구조를 정의할 수 있다.(탬플릿이 꼭 html type일 필요는 없다.)

 

MVT 패턴 코딩 순서

  1. 프로젝트 뼈대 만들기
    • 프로젝트 및 앱 개발에 필요한 디렉토리와 파일 생성
  2. 모델(Model) 코딩하기
    • 테이블 관련 사항을 개발(models.py, admin.py)
  3. URLconf 코딩하기
    • URL 및 View 매핑 관계를 정의(urls.py)
  4. 템플릿(Template) 코딩하기
    • 화면 UI 개발(templates/ 디렉토리 하위의 *.html)
  5. 뷰(View) 코딩하기
    • 어플리케이션 로직 개발(views.py)