파이썬의 프레임워크 중 하나인 flask를 사용한 간단한 예제를 알아보겠습니다.

Flask는 Python 프레임웍인 Django처럼 많이 사용되는 프레임웍 중 하나입니다. 매우 가벼운 것이 특징입니다. 그럼 아래에서 main.py라는 파일을 만들고 내부코드를 작성하여 Hello Webisfree!를 가진 웹페이지를 만들어보겠습니다.



# Flask를 사용한 Python 메인페이지 만들어보기

아래의 코드는 매우 간단하게 메인페이지를 구현하였습니다. 서버를 구동하는 파일을 만들고 띄우는 것까지 진행해보려합니다.

! Python에 Flask 설치하는 방법
아래 방법은 리눅스에 Flask를 설치하는 방법입니다. 아래를 봐주세요.

설치를 위해서 apt-get을 먼저 update하여 최신 패키지 정보를 업데이트합니다.
sudo apt-get update

이제 apt-get을 사용하여 pip를 다운로드 받습니다. pip는 Python 패키지를 설치, 관리할 수 있습니다.
sudo apt-get install python-pip

이제 pip를 사용하여 flask module을 설치합니다. 설치된 모듈은 뒤에 from flask import Flask와 같이 사용할 수 있습니다.
sudo pip install flask

이제 python 실행파일을 만들어 아래의 예제 코드를 추가하도록 합니다. 파일을 생성, 수정하기 위해서 간단한 vim을 사용해보겠습니다.
sudo vim main.py

리눅스 환경에서 vim 에디터를 사용하면 코드를 추가하거나 업데이트할 수 있습니다.

@ main.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def main():
    return 'Hello Webisfree!'

@app.route('/')는 현재 페이지의 라우터 주소를 설정하게됩니다. 즉 주소url이 /인 경우에는 @app.route('/')이 되는 것입니다. 만약 /about/이라면 아래와 같이 추가할 수 있겠습니다.

@app.route('/about/')
def about():
  return 'About page'


! 모듈의 별칭사용하기, aliases
아래와 같이 as를 사용하여 별칭을 사용할 수 있습니다.
from flask import Flask as myFlask

flask를 파일내 코드에서 사용할때 myFlask를 사용하는 것이 가능해집니다.



# 페이지에 html 템플릿 추가 include 하는 방법

html 파일의 내용 모두를 main.py에 사용할 수도 있으나 일반적으로 template 경로와 파일을 사용합니다. 이는 다른 파일을 현재 페이지에 추가하는 include와 같이 해당 파일을 추가하여 보여주게 됩니다. 대략적인 파일구조는 아래와 같습니다. templates는 경로 이름이며 내부에 hello.html의 파일이 존재합니다.

----- main.py
  |
  --- templates --- hello.html

이제 위 hello.html을 추가하여 로드해보도록 하겠습니다. 먼저 hello.html을 간단하게 작성합니다. Hello Webisfree.com을 출력하는 html코드입니다.
@ hello.html
<html>
<body>
  Hello Webisfree!
</body>
</html>

@ template 적용 후 main.py
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def main():
    return render_template('hello.html')

if __name__ == '__main__':
  app.run()

이제 위 파일을 아래와 같이 python 명령엉를 사용하여 실행합니다. 그리고 브라우저에서 확인해보도록 하겠습니다.
$ python app.py

위 코드는 /templates/ 경로 내부의 hello.html을 불러와 출력하게됩니다. 이제 아래와 같이 출력되면 정상적으로 동작하는 것입니다. 바로 브라우저에서 확인해보세요.
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)



# URI 주소를 넘겨받아 변수로 사용하는 방법

만약 URI 주소를 설정된 템플릿 파일에서 받아야 하는 경우 아래와 같이 설정하여 사용 가능합니다.
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/hello/<msg>')
def hello(msg):
    return render_template('hello.html', msg=msg)

hello.html이 다음과 같고 아래 주소를 입력할 경우 출력결과는 이렇게 나타나게 됩니다.

[[ URL ]]
​​​​​​​/hello/webisfree


<html>
  <body>
    Hello {{ msg }}
  </body>
</html>

아래는 위 코드의 출력결과입니다.
Hello webisfree

보시는 것처럼 매우 간단합니다. 여기까지 flask를 사용하여 html을 부라우저에 띄우는 방법까지 알아보았습니다.


! 웹어플리케이션으로 동작시키려면
만약 위와 같은 코드를 사용하여 하나의 어플리케이션으로 구동하려면 서버 환경이 구축되어야합니다. Flask의 경우 nginx에 wsgi를 미들웨어로 사용하여 서버환경을 구축하는 경우가 많습니다. 이 부분에 대하여는 아래 링크에서 참고하시기 바랍니다.

python flask를 사용한 웹서버 구축방법 >
https://webisfree.com/2017-07-19/python-flask를-사용한-웹서버-구축하기