ForFour

[Flask, AWS] 카카오 오픈빌더로 챗봇 만들기 - 6 : Flask Template 본문

Python/[Flask,AWS]카카오 오픈빌더로 챗봇 만들기

[Flask, AWS] 카카오 오픈빌더로 챗봇 만들기 - 6 : Flask Template

for_four 2021. 1. 12. 01:16

이렇게 챗봇을 위해 서버를 운영하게 되면 정적인 파일(이미지 등)을 챗봇으로 넘겨주어야 하는 경우가 생깁니다.
이때 Flask Template을 이용하여 파일을 전송하고 간단하게 웹 어플리케이션을 만들 수 있습니다.

HTML 파일 렌더링 하기

먼저 기본 html 파일을 렌터링하여 URL에 연결해 보겠습니다.
이때 flask의 render_template() 함수를 이용하여 html 파일을 렌더링할 수 있습니다.

이전 글의 server.py를 간략화한 코드로 진행해보겠습니다.

# server.py
from flask import Flask, request, jsonify, render_template
import sys
app = Flask(__name__)

#데코레이터 url과 함수를 이어주는 역할
@app.route(‘/index’) 
def render_html():

    return render_template(‘index.html’)

if __name__ == “__main__”:
    app.run(host=‘0.0.0.0’) # Flask 기본포트 5000번
<!DOCTYPE html>
*<!— simple index.html —>*
<html>
<body>
    <h1>fourz</h1>
</body>
</html>

위의 server.py와 index.html 코드에서 render_template을 활용해 간단하게 html 파일을 렌더링할 수 있습니다.

여기서 render_template은 먼저 templates이란 디렉토리를 먼저 찾기 때문에 index.html은

반드시 templates 디렉토리에 넣어주어야 합니다.

이때 코드수정을 하면서 반영을 즉각적으로 하고 싶다면 다음과 같이 환경변수 설정을 해주면 코드가 변경되었을 때 자동을 서버를 재시작하여 매번 서버를 재시작해야 하는 번거로움을 줄일 수 있습니다. 혹은 run.app(debug=true) 로 설정하는 것도 가능합니다.

  • DEBUG 모드를 on하는 이유는 문제가 발생했을 때의 피드백을 받기 위해서입니다.

    # on Linux, Mac
    % export FLASK_APP='server.app' # run application name
    % export FLASK_DEBUG=1 # or export FLASK_ENV=development
    % flask run # if you wanna run on backround add & option
    
    #on windows
    set FLASK_ENV=development
    
    #for powershell
    $env:FLASK_ENV = "development"

파일 전송하기

Flask에서 정적인 파일을 사용하기 위해서는 static 디렉토리를 사용합니다.

그럼 static 폴더에 sample.png파일을 넣고 웹에 png파일을 띄워보겠습니다.

<!DOCTYPE html>
*<!— simple index.html —>*
<html>
<body>
    <h1>fourz</h1>
</body>
</html>
<img src="static/sample.png">

이미지가 정상적으로 띄워집니다.

위의 html 렌더링정적파일 전송을 이용하여 챗봇에 활용할 수도 있고

간단한 웹을 구성할 수도 있습니다.

Jinja2

Flask에서는 Jinja2라는 템플릿 엔진을 사용해서 애플리케이션 내 변수와 반복문, 조건문 등을 포함하는 HTML 파일을 렌더링할 수 있습니다.
html 내부에서 위의 기능을 사용하고 싶다면 Jinja2 doc를 찾아보셔도 좋을 것 같습니다.

참고

python - How to serve static files in Flask - Stack Overflow
Templates — Flask Documentation (1.1.x)
파이썬 Flask 사용법 2 (Jinja2 템플릿, 변수, 조건문/반복문) - 아무튼 워라밸
🎨’플라스크 웹 개발’ 2장
템플릿 - Flask로 만드는 블로그

Comments