Python Web Framework

이민기·2022년 5월 26일
0
post-thumbnail
  • 웹 프레임워크?
    인터넷에 프레임워크라고 검색하면 되게 많은 자료들이 어려운 용어로 설명을 하고 있어요 우리는 그 프레임워크라는 개념을 요약해서 나타내어 보려고 해요

개발을 도와주는 틀이라고 기억 하시면 훨씬 편할 것 같아요

→ '틀'은 결과물을 일정한 형태로 만들 수 있도록 도와줍니다

→ 때문에 우리가 비슷한 방법과 방식으로 완성 된 형태를 만들 수 있어요

  • 최소한의 기능만 제공하는 형태 서버를 만들기 위한 최소한의 기능들만 제공하는 철학을 가지고있는 프레임워크들입니다.
  • 이미 많은 기능들을 제공하고 있는 형태 웹서비스에 공통적으로 필요한 부분들이 미리 구현되어 있습니다.

Django

  • 큰 프레임 워크
  • 많은 기능들이 이미 있음
  • DB,로그인,패스워드 암호화 기능이 잘되어 있음
  • 커뮤니티가 많이 활성화 되어 있다.

Flask,Pyramid

  • 경량 프레임 워크
  • 최소 기능 제공
  • 로그인, DB등의 관리를 직접 해야함
  • 관리자 페이지도 직접 구축

Django MTV 패턴

MVT패턴은 장고가 일하는 방식을 보여줍니다! 하나하나 다 외우지 않아도 되지만, 그림을 보면서 흐름을 파악하면 앞으로 개발을 하는 데에 많은 도움이 될 것이라고 자신합니다!

  • M (Model)
    • 데이터베이스의 모델 (ORM)
    • 저장되고 사용되는 데이터의 형태
  • T (Template)
    • 사용자에게 보여지는 부분
    • 화면
  • V (View)
    • 실질적으로 프로그램이 동작하는 부분
    • url을 요청하고 응답하는 그 사이에 일어나는 '서비스'들이 존재하는 곳

MTV 구조

user - > URL conf - > View -> Model -> DB - > View -> Template -> user

Django 역사

장고(Django)는 파이썬으로 작성된 오픈 소스 웹 프레임워크로, 모델-뷰-컨트롤러(MVC) 패턴을 따르고 있다. 현재는 장고 소프트웨어 재단에 의해 관리되고 있다.

고도의 데이터베이스 기반 웹사이트를 작성하는 데 있어서 수고를 더는 것이 장고의 주된 목표이다. 장고는 콤포넌트의 재사용성(reusability)과 플러그인화 가능성(pluggability), 빠른 개발 등을 강조하고 있다. 또한, "DRY(Don't repeat yourself: 중복배제)" 원리를 따랐다. 설정 파일부터 데이터 모델에까지 파이썬 언어가 구석구석에 쓰였다.

인스타그램, NASA, 빗버킷, Disqus, 모질라에서 장고를 사용하는 것으로 알려져있다.

장고는 2003년과 2004년에 로렌스 저널-월드(Lawrence Journal-World)라는 신문사의 인턴 웹 프로그래머였던 에이드리안 홀로바티(Adrian Holovaty)와 사이먼 윌리슨(Simon Willison)이 파이썬을 이용해 애플리케이션을 만들기 시작하면서 처음 개발되었다. 당시 로렌스 저널-월드의 웹사이트는 PHP 기반으로 쓰여졌었는데, 홀로바티와 윌리슨은 PHP는 규모가 큰 웹사이트에 적합하지 않다고 생각했고 이를 계기로 파이썬으로 웹 개발을 하기로 결심했다. 하지만 규모가 큰 웹 개발에 적합한 파이썬 도구가 없다는 것을 깨닫고 그들은 장고를 개발하게 되었다. 장고라는 이름은 홀로바티가 좋아하던 집시 재즈 기타리스트인 장고 라인하르트에서 따온 것이다.

사실 장고는 오직 로렌스 웹사이트를 구동하기 위함이었으나, 홀로바티와 윌리슨이 로렌스의 소유자인 더 월드 컴퍼니(The World Company)를 설득하여 오픈 소스로 2005년 7월에 BSD 사용 허가서로 공개하게 되었다.

2008년 6월, 장고 소프트웨어 재단이 공식적으로 장고 프로젝트를 관리하게 된다는 공지가 장고 웹사이트에 올라왔다.

2017년 12월에 장고 2.0 버전이 출시되었다.

특징

장고는 웹 개발에서 번거로운 요소들을 새로 개발할 필요 없이 내장된 기능만을 이용해 빠른 개발을 할 수 있다는 장점이 있다.

구성

장고는 파이썬으로 코딩한 모델을 관계형 데이터베이스로 구축해주는 모델(Model), HTTP 요청을 처리하는 웹 템플릿 시스템인 뷰(View), URL의 라우팅을 처리하는 URL 컨트롤러 (Controller) 로 구성된 MVC 디자인 패턴을 따른다.

하지만 전통적인 MVC 디자인 패턴에서 이야기하는 컨트롤러의 기능을 프레임워크를 자체에서 하기 때문에 모델(Model), 템플릿(Template), 뷰(View)로 분류해 MTV 프레임워크라고 보기도 한다.

장고의 관리자 페이지 예시
장고의 관리자 페이지 예시
모델
모델은 데이터에 관한 정보를 담는다. 데이터에 대한 접근, 검증, 작동과 데이터 사이의 관계를 정의하는데, 일반적으로 각각의 모델은 데이터베이스에서 테이블에 해당한다.

장고에서는 모델을 정의할 때 필드의 종류를 지정해줘야 하는데, 이것이 데이터베이스에게 컬럼 타입을 알려주고 HTML 폼으로 표시 될 때의 입력 타입도 내포하는 역할을 한다. 또한 장고의 폼 자동 생성 API를 이용할 때 데이터 검증에 쓰이기도 한다

어떤 데이터가 표시될 것인지를 정의한다. 뷰는 HTTP 응답(response)를 반환해야 하며 응답의 종류는 웹 페이지, 리디렉션, 문서 등의 다양한 형태가 가능하다.

장고에는 자주 사용되는 형태의 뷰를 패턴화하여 추상화 해둔 재사용 가능한 뷰들을 내장해 놓았는데, 이들을 제네릭 뷰(generic view) 라고 하며 원하는 제네릭 뷰를 상속한 클래스 뷰를 생성하여 사용할 수 있다.

템플릿

데이터가 어떻게 표시되는 지를 정의한다. 템플릿은 사용자에게 실제로 보여지는 웹 페이지나 문서를 다룬다.

흔히 HTML 에 기반해서 템플릿을 만들며, HTML 에 동적인 요소를 추가하기 위해 파이썬의 일부 기능을 쓰게 도와주는 장고 템플릿 태그가 존재한다.

내장 애플리케이션

장고에는 아래와 같은 웹 개발에서 자주 쓰이는 애플리케이션이 'contrib' 패키지에 내장되어있다.

확장가능한 사용자 인증 시스템

동적 관리자 인터페이스

  • RSS 또는 아톰을 위한 피드 생성
  • 사이트맵 생성
  • 사이트 간 요청 위조(CSRF), 사이트 간 스크립팅(XSS), SQL 인젝션과 같은 해킹 시도에 대한 보안 대책
  • 외부 패키지
  • 내장된 요소들 중에 원하는 것이 없으면 장고를 위해 개발된 외부 패키지를 이용할 수도 있다. 장고에서 사용할 수 있는 패키지들을 모아놓은 웹사이트 Django Packages의 경우에는 3600개가 넘는 패키지가 등록되어있는 것을 알 수 있으며, 커뮤니티 멤버들의 꾸준한 기여 덕분에 많은 양질의 패키지들이 개발되고 있다. 이는 파이썬의 "건전지 포함"(Batteries Included)의 정신에 입각한 것으로 볼 수도 있다.
profile
지나가는사람

0개의 댓글