FLASK for MLOps
대단한 뜻은 없고 MLOps 강의에 있는 플라스크 부분을 가져온 것 뿐이다
Flask
Flask 시작하기
flask를 돌리기 위해 우선 flask를 설치해주어야한다.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def welcome():
return "Welcome to this Flask course"
@app.route("/index")
def welcome_index():
return "Welcome to this index page"
if __name__ == "__main__":
app.run()
위 형식의 코드를 돌리면 웹브라우저에서 코드에 적어준 메시지들을 확인할 수 있다.
app.run() 부분에 app.run(debug=True) 옵션으로 설정해주면 서버 재시작 없이도 변경사항을 바로바로 반영할 수 있다.
GET vs POST
Flask에서도 당연하겠지만 GET & POST를 이용해 클라이언트로부터 데이터를 받는데 둘의 차이점을 써보자면 아래와 같다.
GET: 주로 데이터 조회를 위해 사용 POST: 주로 데이터 생성, 변경, 삭제 등의 요청에 사용
Jinja2 템플릿 엔진
Jinja2는 Flask 패키지에 내장된 템플릿 엔진이다. 동적 웹 페이지를 구성할 때 서버에서 곧바로 웹페이지 로딩과 동시에 변수 값을 할당해준다. 아래 문법에 따라 HTML 문서 상에서 반복문, 조건문을 사용 가능하다.
작성법:
{{ }} expressions to print output in html
{%...%} conditions, for loops
{#..#} this is for comments
Dynamic URL
웹페이지를 이동할 때 다음 페이지의 URL을 url_for() 함수에 넣어서 전달하거나 route 함수명을 넣어서 해당 route가 가지는 url 주소를 가져올 수 있다.
따라서 URL을 하드코딩하는 대신 url_for에 함수 이름을 전달해서 정확한 URL을 얻을 수도 있는 것이다.
@app.route('/submit',methods=['POST','GET'])
def submit():
total_score=0
if request.method=='POST':
science=float(request.form['science'])
maths=float(request.form['maths'])
c=float(request.form['c'])
data_science=float(request.form['datascience'])
total_score=(science+maths+c+data_science)/4
else:
return render_template('getresult.html')
return redirect(url_for('successres',score=total_score))

