본문 바로가기

내일배움단/웹개발 종합반

[내일배움단] 웹개발 종합반 - 4주차 - 배운 내용 정리

Flask

기본 코드

from flask import Flask, render_template, jsonify
from pymongo import MongoClient

app = Flask(__name__)
client = MongoClient('localhost', 27017)
db = client.dbhomework


# HTML 화면 보여주기
@app.route('/')
def homework():
    return render_template('index.html')


# 주문하기(POST) API
@app.route('/order', methods=['POST'])
def save_order():
    sample_receive = request.form['sample_give']
    print(sample_receive)
    return jsonify({'msg': '이 요청은 POST!'})


# 주문 목록보기(Read) API
@app.route('/order', methods=['GET'])
def view_orders():
    sample_receive = request.args.get('sample_give')
    print(sample_receive)
    return jsonify({'msg': '이 요청은 GET!'})


if __name__ == '__main__':
    app.run('0.0.0.0', port=5000, debug=True)

폴더 구조

Flask를 사용하기 위해서는 폴더 구조를 갖춰야 한다.

static 폴더에 CSS나 이미지 파일들을 담아둘 때 쓴다.

templates 폴더는 html 파일을 담아둘 때 쓴다.

templates 폴더에 미리 담아둔 html 파일은 render_template()에 해당 파일 이름을 문자열로 전달하여 사용할 수 있다.

@app.route() 사용법

@app.route의 첫번째 전달인자로 경로를 넣어준다. 해당 경로로 요청이 들어왔을 때, 처리된다. (창구의 개념)

@app.route의 methods 전달인자로 ['GET']이나 ['POST']를 넣어주면 해당 GET 요청이나 POST 요청이 들어왔을 때, 아래 정의한 함수가 실행된다. 

POST 방식의 경우 data로 전달한 내용이 request.form에 담겨있어 키값을 이용해 접근할 수 있다.

GET 방식의 경우 url로 전달한 인자들을 request.args.get() 함수에 해당 문자열을 전달하여 값을 얻을 수 있다.