본문 바로가기

hololo/FLASK

1] Flask

1. 웹 프레임워크

먼저 웹 프레임워크란 무엇인가?

 

쉽게 말하면 직접 물건을 전달해주는 것과 배달 서비스를 이용하는 것으로 비유를 들 수 있는데,
배달 서비스의 경우 이용방법만 안다면 아주 간편하게 물건을 전송할 수 있다.
여기서 배달 서비스는 프레임워크이고, 직접 물건을 전달하는 방식보다 훨씬 간편하게 해준다.

 

즉, 웹 프레임워크는 간단히 말하자면 '웹을 개발하는 데에 있어 쉽게 할 수 있도록 도와주는 도구'이다.

 

위키 백과를 보면, 웹 프레임워크는

동적인 웹 페이지나, 웹 어플리케이션, 웹 서비스 개발 보조용으로 만들어지는 어플리케이션 프레임워크의 일종
웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있다.

 

2. 프레임워크와 라이브러리의 차이

라이브러리는 단순 활용가능한 도구들의 집합이다. 개발자가 만든 클래스 또는 함수 등을 나열하여 필요한 것들을 불러 사용하는 방식이다.

 

프레임워크와 라이브러리의 큰 차이는 흐름을 누가 가지고 있느냐인데,

프레임워크의 경우엔 전체적인 흐름을 스스로가 쥐고 있으며, 개발자는 그 안에서 필요한 코드를 짜 넣는다.

반면에 라이브러리는 개발자가 전체적인 흐름을 만들며, 라이브러리에서 필요한 것들을 가져다 사용한다.

 

즉, 프레임워크는 가져다가 사용한다기보다는 거기에 들어가서 사용한다는 느낌으로 접근해야 한다.

 

3. 프레임워크를 사용해야 하는 이유

1. 기본 개념의 라이브러리 구현이 불필요.

    DB, 라우팅, request, response처리, 에러 처리 등이 이미 클래스나 컴포넌트로 구성

2. 지속적인 프레임워크 업데이트로 기본 기능의 효율성 및 퀄리티 향상

 

4. Flask

파이썬 기반의 웹 프레임워크이다. 파이썬을 사용하여 웹 개발을 도와주는 프레임워크!
(설명이 너무 짧군...)

플라스크 이외에도 유명한 장고(Django)가 있다.

 

5. Flask 설치

현재 사용하는 16.04 Ubuntu에 설치해보았다.

첫번째 설치 시도

설치를 시도해보았지만, E: Unable to locate ~~가 뜨면서 설치에 실패했다.

구글링을 해보니, Ubuntu 12.04 혹은 그 이상의 버전에서는

 

apt-get install python3-setuptools

easy_install3 pip

 

라고 입력해주면 설치가 가능하다고 한다.

 

성공적으로 설치를 완료한 후에,

 

flask설치

Flask도 성공적으로 설치하였다.

 

6. Flask를 이용한 간단한 페이지

app.py

다음은 'Hello World'를 출력해주는 웹페이지를 만드는 코드이다.

 

코드를 차례로 보자면,

1번째 줄 : Flask라는 패키지에서 방금 설치한 flask를 가져온다. (앞으로 flask를 쓰겠다는 의미)

2번째 줄 : 플라스크를 생성하는 코드이다. app이라는 변수에 flask 프로젝트를 초기화시켜 실행하겠다는 코드

4번째 줄 : url을 지정해주는 코드이다. 위에서 생성한 app에 대해 route, 경로를 설정해줄 건데,

             예를 들어, @app.route('/route_test')라고 했다면 http://(우리 주소)/route_test와 같은 경로가 된다.

5번째 줄 : 함수를 정의하는데, 위에서 설정한 경로에 사용자가 요청을 보냈을 경우 실행되는 함수이다.

              hello_world라는 함수를 실행할 것이고, 단순히 'Hello World'라는 문자열을 반환할 것이다.

8,9번째 줄 : 해단 플라스크 프로젝트를 실행시키는 코드이다.

 

코드를 작성한 후에, 페이지를 실행해보았다.

 

localhost:5000호출 결과

 

성공적으로 Hello World!가 출력되었다.

 

 

[Reference]

https://doorbw.tistory.com/167
https://velog.io/@suhoag/%EC%9B%B9%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC
https://namu.wiki/w/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC

https://gist.github.com/singun/ea8cbf7f60ec9f2e4908