일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- chatbot
- 챗봇
- 구글클라우드
- 플라스크
- OS
- AWS
- gcp
- graphQL
- cloud
- flask
- GQL
- nohub
- Lambda
- venv
- 도커
- 클라우드
- Mac
- Python
- 카카오톡 챗봇
- 노션
- 운영체제
- braces
- jinja2
- docker
- Windows
- 시작
- 카카오 오픈빌더
- ssh
- 파일권한
- vscode
- Today
- Total
ForFour
[Flask, AWS] 카카오 오픈빌더로 챗봇 만들기 - 6 : Flask Template 본문
[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로 만드는 블로그
'Python > [Flask,AWS]카카오 오픈빌더로 챗봇 만들기' 카테고리의 다른 글
[Flask, AWS] 카카오 오픈빌더로 챗봇 만들기 - 5 : 서버 운영하기 (0) | 2020.12.27 |
---|---|
[Flask, AWS] 카카오 오픈빌더로 챗봇 만들기 - 4 : 스킬 활용하기 (0) | 2020.12.21 |
[Flask, AWS] 카카오 오픈빌더로 챗봇 만들기 - 3 : AWS에서 Flask서버 구성하기 (0) | 2020.12.17 |
[Flask, AWS] 카카오 오픈빌더로 챗봇 만들기 - 2 : 필수 개념 (0) | 2020.12.17 |
[Flask, AWS] 카카오 오픈빌더로 챗봇 만들기 - 1 : 준비 단계 (0) | 2020.12.17 |