top of page
  • 작성자 사진JC.kim

[Flask] Python 웹 프로그래밍 1 (플라스크, 파이썬)

최종 수정일: 2018년 8월 12일


오늘은 Flask 라이브러리를 이용하여 Python으로 웹프로그래밍을 하는 법에 대해 공부해 보자. 물론 오늘 작성하는 내용으로는 절대 웹을 완전히,충분히(또는 조금도) 이해하지 못할것이다. 그렇다고 하나하나 깊게 배우다 보면 실질적인 서비스를 제작하는데 너무 오래걸리기에, 필요한 개념만 집고 넘어가는 식으로 설명하고, 필요한 부분은 더 공부해 나가는 방식을 선택했다.


먼저 Flask는 웹 서비스를 제공하는 프레임 워크로써, Python 에서 대표적으로 사용되는 웹 프레임 워크 중 하나인 'django' 와 같은 라이브러리이다. 현장이나 실무에서는 django를 많이 사용하지만, flask는 그 사용이 훨씬 쉽고 간단하여 웹서비스를 제작하는데 어렵지 않게 사용할 수 있다. 원리가 Java와 비슷하다. 그럼 먼저 웹 서비스에 대해 간단히 알아보자.


웹 서비스는 현재 우리가 사용하는 모든 서비스의 기본이 된다. 이 웹 서비스를 구축할 때, 주로 insert, select, update, delete 의 단계를 고려하여 제작 된다. 이 각 단계는 MVC 패턴에 의해 구축이 되는데 이는 Model View Controller 의 줄임말으로, Model은 웹에 구축되는 DB(Data Base)를 처리하는 곳, View는 HTML을 화면에 형성하는것, Controller는 클라이언트와 서버의 상황을 제어 관리하는 것을 의미한다. 이는 프로그램 디자인 매커니즘 중 하나이며 , 가장 기본적이다.

최근에는 클라이언트를 Front_end, 서버를 Back_end라고도 부른다. 서버와 클라이언트는 기본적으로 위와 같은 주고받는 식의 메커니즘을 따른다. 클라이언트가 서버에 웹을 요청하면, 서버에서는 HTML로 응답한다. 클라이언트에서 요청한 내용은 서버의 자원 (DB)를 바탕으로 controller가 처리하게 된다. 클라이언트는 HTML을 다운로드 받아 사용자의 화면에 응답받은 내용을 출력해 준다. 웹브라우저는 HTML을 화면에 띄워주는 역할을 하게된다.




위의 두가지 라이브러리는 응답과 요청의 웹 페이지 메커니즘을 실행시켜주는 라이브러리이다. Flask를 설치 할때, 자동적으로 설치되는 라이브러리이다. jinja2는 template엔진이며 (html형식의 동적 영역을 지원) Werkzeug는 HTTP를 받아 분석하여 처리한다 (controller역할) 그럼 이제 본격적으로 Flask를 사용해 보자.


Flask 웹 페이지에 들어가 보면 기본 어플리케이션에 대해 나와 있다.

페이지에 나와있는 Hello world 예제를 한번 해보자. 나는 vscode를 (visual studio code)의 편집기를 이용하여 편집하고, DOS로 실행하였다.


from flask import Flask

// flask 의 라이브러리에 Flask 함수를 호출해 온다.

app = Flask(__name__)

// 이 구문은 flask 객체가 생성되어 app라는 변수에 저장된다.

@app.route(‘/’)

// @는 데코레이트라고 부르며, URL을 불러 처리하는 명령어이다.

(‘/’)가 http://IP:(port number)/ 맨 뒤의 /를 의미하며 이는 root의 위치를 나타낸다. 이 루트가 주소를 받는다.(Local Host : 127.0.0.1:) 그리고 바로 아래 의 함수를 호출한다. (Hello World 출력함수 호출, 함수에 있는 hello world를 실행시켜 준다 . 포트번호의 default값은 5000번 이다. )


위의 함수를 실행시킨 결과는 아래와 같다.

여기서 웹페이지를 열게 되면, GET이라는 명령어와 함께 HTTP(하이퍼텍스전송프로토콜 ; 인터넷 간 텍스트 전송 프로토콜)을 이용해 'Hello world!'를 출력한 모습을 볼 수있다. 여기서 잠시 전송 방식에 대해 알아보자 .

HTTP로 HTML을 제작하여 서버에 올리는 방식에는 2가지가 있다. 하는 GET 방식이며, 다른 하나는 POST방식이다. GET은 주로 링크를 클릭할 때, POST는 게시물을 올릴 때, 즉 내용을 담아 보낼 때 주로 사용한다. 아래 사진과 같은 방식은 GET 방식이다. POST 방식은 잠시후에 확인 해 보자.

아래 실행 화면을 보면, 주소가 127.0.0.1:5000/abc 로 되어있다.

- "GET /abc HTTP/1.1" 200 - : 정상적으로 잘 작동했다. (200)

- "GET /favicon.ico HTTP/1.1" 404 - : URL이 존재하지 않는다. (404) / favicon이 없으므로

여기서 HTTP1.1 ver 표시 뒤 숫자가 나오는데 이는 동작이 잘되었는지 표현해준다. 위의 설명처름 200이라는 수가 나오면 잘 작동 했다는 의미이다.


그럼 이번엔 웹페이지를 구성하기 전에 Flask의 몇가지 관행들에 대해 알아보자 . 첫번째로 프로그램의 시작 프로그램은 app.py로 시작한다. 이 프로그램은 파이썬 코드로, HTML과 SQL 등을 연결하고, 정해진 동작을 실행하는 함수를 넣는다. 그리고 working directory의 기본적인 폴더 구성을 static 과 templates로 나눈다. 이는 웹에서 작동되는 요소들 중 동적인 요소와 정적인 요소들을 나눠 따로 저장해야 하기 때문이다. static에는 css나 html, image형식의 파일을 저장하고, templates에는 확장자는 html이지만, 동적으로 움직이는 jinja2 파일을 넣는다.

또 static 내부에는 데이터 타입에 따른 폴더를 각각 나눠놨다. 아래 Templates폴더에는 동적으로 실행될 html형식에 데이터들이 들어 갈 것이다. 현재는 두 가지의 html이 존재하지만, 어떤형태의 웹을 만드는 것에 따라 달라진다.

웹을 구성하는데 기본적인 것들을 아주간단히 확인해 보았다. 웹은 간단하게 만들어 보며 부족한 내용이나 꼭 필요한 이론들은 따로 올리도록 할 것이다. 이번 flask를 이용한 웹페이지 만들기에 참고한 도서는 아래와 같다.


http://www.yes24.co.kr/24/goods/27640037



조회수 4,365회댓글 0개

최근 게시물

전체 보기

bottom of page