Flask 란?
웹 페이지를 만들 수 있게 해주는 웹 프레임워크입니다.
프레임 워크: 일반적인 정의"소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것"입니다. 쉽게 설명하자면, 웹(사이트)을 띄우는데 필요한 여러 기능을 제공해주는 기능 모음(클래스 형태로 기능 제공)입니다.
클래스 형태란 python에서 class로 기능을 구현해서 제공해 준다는 것입니다.
Flask로 무엇을 할 수 있는가?
웹 개발은 웹페이지 화면을 만드는 프런트엔드와, 웹페이지의 내부 정보를 처리하는 백엔드로 나뉩니다. Flask는 백엔드의 전반적인 역할을 해줍니다.
일반적으로 웹사이트를 만들려면 HTML, CSS, JS(Java Script)로 웹페이지 구현을 합니다(프런트 엔드). 하지만, 다른 사람들이 웹페이지에 접속을 하려면, 웹페이지를 인터넷에 띄워야 하고, 사람들이 들어오는 트래픽을 감당해야 되고, 사람들이 웹페이지를 통해 회원가입을 하거나, 게시판에 글을 쓰면 그 정보들 역시 관리해야 합니다.
여기서 Flask는 웹페이지를 인터넷에 띄우고, 트래픽을 감당하고, 회원들의 정보와 게시판 정보를 관리하는 역할을 도와줍니다.
설치
pip install flask
저는 주피터 노트북을 사용해서 아래와 같이 실행했습니다.
기초 사용법(flask의 Hello World)
Flask 공식문서의 QuickStart 부분에 제일 처음나오는 기초 코드를 사용합니다.
from flask import Flask ## flask 라이브러리에서 Flask import
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == "__main__":
app.run()
*코드 설명
app = Flask(__name__) : Flask 객체를 app이라는 변수에 할당. __name__은 python 내부의 특별한 변수명이며 module이름이 저장되는 변수입니다. 쉽게 말해 현재 스크립트가 main 스크립트임을 확인하는 것이고, 아래의 if __name__ == "__main__": 에서 현재 스크립트가 main이기 때문에 app.run()을 실행하게 해 줍니다.
python 코딩 도장 페이지에 자세한 설명이 있습니다.
@app.route('/') : 인터넷의 주소 부분을 의미. 해당 주소에서 @app.route('/') 다음에 나오는 함수를 실행한다는 의미.
ex) www.naver.com/mail 주소가 있을 때, @app.route('/mail') 뒤에 메일 관련 함수가 오고, 네이버에서 mail을 누르면(www.naver.com/mail로 이동하면) 메일 관련 함수가 실행.
hello_world 함수: 'Hello, World!'를 반환하는 함수.
if __name__ == "__main__": app.run() : 현재 스크립트가 메인으로 실행되었을 때(즉, python [현재스크립트].py 실행했을 때) app.run()을 실행.
* 결과
코드 실행 결과 http://127.0.0.1:5000/에 웹사이트가 생성되었다는 결과를 볼 수 있습니다. 해당 주소를 입력하면 아래와 같이 hello_word함수가 실행되며 "Hello, World!"가 웹사이트 화면에 표시됩니다.
http://127.0.0.1:5000/ : 127.0.0.1은 자신의 컴퓨터를 의미하는 IP 주소입니다. Flask의 기본 Port는 5000이기 떄문에
[자신의 컴퓨터 IP]:5000로 주소가 생성됩니다.
Reference)
Flask 로고: flask.palletsprojects.com/en/1.1.x/
Flask Document(Quick Start): flask.palletsprojects.com/en/1.1.x/quickstart/
코딩 도장(__name__ == "__main__" 의미: dojang.io/mod/page/view.php?id=2448
'Back-End > Flask' 카테고리의 다른 글
[Flask] 플라스크 HTML 연결 실습 (로또 추천 시스템 - 조코딩 따라하기) (5) | 2020.09.09 |
---|