이 영역을 누르면 첫 페이지로 이동
웬디의 기묘한 이야기 블로그의 첫 페이지로 이동

웬디의 기묘한 이야기

페이지 맨 위로 올라가기

웬디의 기묘한 이야기

C/C++ Windows Hooking 개발자의 블로그 입니다! 이곳은 개발 외에도 저의 취미들이 공유되는 기묘한 이야기가 펼쳐집니다.

Python django vs Flask. web framework 무엇을 선택해야할까?

  • 2019.12.25 00:52
  • ⌨ DEVELOPMENT/Python
반응형

 

Python Web Framework django vs Flask

Python에서 django와 Flask는 가장 널리 사용되는 오픈소스 기반 웹 프레임워크입니다.

Django와 Flask는 각각 장단점이 존재할 텐데요 뭐가 더 좋다 나쁘다가 아니라 활용도에 따라 무엇을 써야 할지를 판단하는 게 중요합니다.

간단히 설명하자면 django는 Python의 full stack web framework인 반면 Flask는 가볍고 확장 가능한 web framework입니다. 즉 django는 기능이 훨씬 뛰어나지만 복잡하고, Flask는 매우 단순하고 가볍습니다.

 

django vs flask

 

Python django

django는 python기반 web framework 중 가장 많이 사용되고 있는 web framework이며, Flask보다 약 10배 많은 코드 라인으로 개발이 되어있습니다. (code 290,087 lines)

구글 앱 엔진에서 django를 사용하게 되면서 많은 사람들이 사용하게 되었으며, web application을 개발하기 위한 대부분의 기능들이 갖추어져 있기 때문에 외부 도구 및 라이브러리를 사용하지 않고도 어느 정도 규모가 있는 web application 개발에도 문제가 없습니다.

 

 

django는 ORM (Object relational mapping) 기능이 내장되어있습니다.

객체 관계 매핑이라고도 하며 데이터베이스 시스템과 데이터 모델 클래스를 연결하는 역할을 합니다.

ORM을 이용해 다양한 데이터베이스를 지원하고 있으며, SQL 의존적인 코드를 벗어나 생산적인 코딩이 가능하게 되어 유지보수가 편하게 됩니다.

 

 

django는 자동으로 관리자 화면을 구성해줍니다.

django는 데이터베이스에 대한 관리 기능을 위하여 프로젝트를 시작하는 시점에 관리자 화면을 제공합니다. 이런 관리자 화면을 이용하여 web application에서 사용하는 데이터들을 쉽게 생성하거나 변경이 가능합니다.

 

 

django website

https://www.djangoproject.com/

 

The Web framework for perfectionists with deadlines | Django

Django Django makes it easier to build better Web apps more quickly and with less code. Get started with Django

www.djangoproject.com

 

 

Python Flask

Flask는 Python의 Micro framework를 기반으로 단순하고 매우 가벼운 web framework입니다.

URL 라우팅, Template, Cookie, Debugger 및 개발서버 등 기본 기능만을 제공합니다.

그러기 때문에 django의 1/10밖에 안 되는 코드 (code 28,677 lines)로 구현되어있으며, 직접 소스코드를 분석하여 내부적으로 일어나는 확인할 수 있으며 권장되고 있습니다.

Flask의 구조는 크게 WSGI용 Library인 Werkzeug와 HTML 렌더링 엔진인 Jinja2 template으로 구성되어있습니다.

 

즉 Flask는 기본 기능 제공에 다양한 확장 모듈을 이용할 수 있는 구조 입니다.

django에서는 특수한경우 내부 로직에서 어떠한 기능을 지원하지 않거나 장애가 발생했을 때 이를 해결하기위해 큰 비용이 들게되지만 Flask는 정해진 확장 모듈이 없기때문에 다양한 방법으로 해결이 가능합니다.

 

 

Flask는 단 10줄도 안되는 코드로 웹 서버를 구동할 수 있습니다.

너무나도 간단합니다. from flask import Flask 를 시작으로 서버를 시작하는 코드까지 10줄이 되지 않습니다.

물론 그만큼 최소한의 패키지로 구성되어있기때문에 Hello World는 간단히 구현 되지만, 상용 웹 서버를 구현할때는 단순하지만은 않습니다.

 

from flask import Flask

app = Flask(__name__)
@app.route("/")
def index():                           
    return "<h1>hello world</h1>"

if __name__ == "__main__":              
    app.run(host="127.0.0.1", port="8080")
    
    
------------------------------------------------------------

 * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
127.0.0.1 - - [25/Dec/2019 11:02:24] "GET / HTTP/1.1" 200 -

 

 

Flask에는 ORM (Object relational mapping) 기능이 제공되지 않습니다.

그렇기 때문에 개발자가 직접 SQLAlchemy 등 개발자에게 편하거나 익숙한 패키지를 설치하여 사용할 수 있습니다.

 

위에서 언급한대로 Flask는 최소한의 기능만을 제공합니다. 데이터 베이스 연결 외에도 양식 처리, 보안, 인증 등 모두 개발자가 직접 처리해주어야 합니다.

즉, django에서는 탄탄한 framework 안에서 다른 설계 패턴으로 벗어날 수 없다는 점을 Flask에서는 직접 새로운 framework로 설계할 수 있다는 장점이 있지만 이제 막 파이썬 웹 프레임워크에 진입하는 입장에서는 신경써야할게 한두가지가 아니기때문에 최대 단점으로 다가올 수 있습니다.

 

 

Flask website

https://palletsprojects.com/p/flask/

 

Flask

Flask is a lightweight WSGI web application framework. It is designed to make getting started quick and easy, with the ability to scale up to complex applications. It began as a simple wrapper around Werkzeug and Jinja and has become one of the most popula

palletsprojects.com

 

Google Trend로 보는 django와 Flask

django와 Flask에 대한 관심도가 어느 정도인지 비교를 해보자면 역시 django가 조금 더 높습니다.

community 크기, 개발 참여자 등에서도 큰 차이를 볼 수 있습니다.

 

 

https://www.openhub.net/p/_compare?project_0=Django&project_1=Flask

 

Compare Projects - Open Hub

Open Hub User Rating 4.70336     4.7 Based on 327 user ratings. 4.83333     4.8 Based on 12 user ratings.  

www.openhub.net

 

django는 게시판같은 복잡한 구조의 웹을 구성하기에는 좋아보이지만, 단순한 REST API 서버를 만들기에는 군더더기 없는 Flask가 더 효율적으로 보이네요

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'⌨ DEVELOPMENT > Python' 카테고리의 다른 글

[Python] backtrader를 이용한 주식 전략 백테스팅 시뮬레이션  (9) 2020.01.04
[Python] 네이버 Finance API를 이용한 ETF 종목 가져오기  (10) 2020.01.02
[Python] pandas 주식정보 이동평균(moving average) 구하기  (1) 2019.12.29
[Python] pandas 주식정보로 스토캐스틱(Stochastic Oscillator) 구하기  (3) 2019.12.28
[Python] pandas_datareader를 이용하여 주식 데이터 가져오기! Yahoo Finance  (3) 2019.12.26
[Python] Pandas를 이용하여 주식 종목 코드 가져오기! 한국 거래소 (KRX).  (4) 2019.12.26
Google Colaboratory 소개 및 사용법 : 주피터 노트북 (jupyter notebook)  (2) 2019.12.16
[Python] 파이썬 설치 및 개발 환경 설정 Visual Studio 연동방법  (2) 2019.10.09

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Python] pandas_datareader를 이용하여 주식 데이터 가져오기! Yahoo Finance

    [Python] pandas_datareader를 이용하여 주식 데이터 가져오기! Yahoo Finance

    2019.12.26
  • [Python] Pandas를 이용하여 주식 종목 코드 가져오기! 한국 거래소 (KRX).

    [Python] Pandas를 이용하여 주식 종목 코드 가져오기! 한국 거래소 (KRX).

    2019.12.26
  • Google Colaboratory 소개 및 사용법 : 주피터 노트북 (jupyter notebook)

    Google Colaboratory 소개 및 사용법 : 주피터 노트북 (jupyter notebook)

    2019.12.16
  • [Python] 파이썬 설치 및 개발 환경 설정 Visual Studio 연동방법

    [Python] 파이썬 설치 및 개발 환경 설정 Visual Studio 연동방법

    2019.10.09
다른 글 더 둘러보기

정보

웬디의 기묘한 이야기 블로그의 첫 페이지로 이동

웬디의 기묘한 이야기

  • 웬디의 기묘한 이야기의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 이야기

카테고리

  • 분류 전체보기 (204)
    • MY STORY (2)
    • 📸 WALKING WITH YOU (85)
      • 아이슬란드 신혼여행 이야기 (14)
      • 대한민국 구석구석 (62)
      • CONTAX N1 + T* 28-80mm (4)
      • SAMSUNG NX3000 (1)
      • 어느 멋진 날 (4)
    • ⌨ DEVELOPMENT (80)
      • BOOK:Review (1)
      • AI (13)
      • C++ (26)
      • Python (10)
      • WIndows Hooking (9)
      • Windows Kernel (3)
      • Design Pattern (3)
      • Debugging (9)
      • Tools (0)
      • Project (1)
      • Android (1)
      • 상업용 무료폰트 (4)
    • OS (4)
      • News (0)
      • Windows 일반 (4)
    • 모바일 (2)
      • 모바일 게임 (2)
    • 멘사 퍼즐 (9)
    • 생활 꿀 TIP (7)
      • 건강 (3)
      • 일상 (2)
    • 물생활 (8)
      • 골든볼 라미네지 롱핀 (8)
    • IT 기기 (2)
    • BLOG (4)
      • TISTORY BLOG TIP (3)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • windbg
  • 해외여행
  • c++
  • 아이슬란드
  • c
  • 카페
  • 신혼여행
  • AI

나의 외부 링크

  • kernel undocument api
  • 지구 관찰자의 일기
  • 지구와 지구곰

정보

WENDYS의 웬디의 기묘한 이야기

웬디의 기묘한 이야기

WENDYS

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © WENDYS. Designed by Fraccino.

티스토리툴바