가상환경을 만들고 flask를 설치하기
flask는 아래의 명령어를 이용하여 설치 가능
pip install flask
Flask의 기본 어플리케이션의 모양은 아래와 같음
파일 이름은 다른 이름이여도 괜찮으나 보통 app.py를 많이 사용함
# app.py
from flask import Flask # 1
app=Flask(__name__) # 2
@app.route("/", methods=['GET']) # 3
def hello_world():
return "Hello World!"
if __name__ == '__main__': # 4
app.run()
1) Flask class를 import함
2) Flask class의 인스턴스를 생성 보통 변수로 app을 사용함
3) route() 데코레이터를 이용하여 라우트하기
4) if __name__ == '__main__'
파일이 인터프리터에 의해서 실행되는 경우를 의미
위의 코드는 인터프리터에 의해서 직접 실행될 경우에만 실행하도록 하고 싶은 코드 블럭이 있는 경우에 사용
따라서 app.run() 위에 이 문장을 사용하면 우리가 실행한 서버가 현재 동작되는 유일한 서버라는 것을 보장할 수 있음
app.debug = True
app.run()
app.run(debug=True)
아래의 예시는 blueprint를 만드는 예시
blueprint 파일의 이름은 user.py로 지정하였음
# user.py
from flask import Blueprint
user = Blueprint("user",__name__, path for template) # 1
@user.route("/blueprint")
def example():
return "this is blueprint"
1) user = Blueprint("blueprint이름 / 보통 file의 이름으로 지정",__name__
, template의 경로 / 없어도 괜찮음)
위의 내용을 blueprint에 등록하고 app.py에는 아래의 예시처럼 사용
# app.py
from flask import Flask
from user import user
app=Flask(__name__)
app.register_blueprint(user, url_prefix="/admin") # 2
@app.route("/blueprint")
def example2():
return "this is not blueprint"
if __name__ == "__main__":
app.run(debug=True, port=5000)
2) app.register_blueprint를 이용하여
url_prefix 파라미터로 app의 루트로부터 이 모듈의 url prefix를 정의할 수 있음
만약 이 파일을 실행하였을 때
http://127.0.0.1:5000/blueprint를 부르면
this is not blueprint가 나타남
http://127.0.0.1:5000/admin/blueprint를 부르면
this is blueprint가 나타남!
flask 서버를 시작하는 부분만 따로 파일로 만들 수 있음
flask 서버를 시작할 때 python run.py를 이용하여 구동
위의 app.py에 있는 서버 구동 내용을 run.py에 옮겨적고 실행 파일들을 import하기
# run.py
from app import user2,app
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000, debug=True)
# app.py
from flask import Flask
from user import user
app=Flask(__name__)
app.register_blueprint(user, url_prefix="/admin") # 2
@app.route("/blueprint")
def example2():
return "this is not blueprint"
다른 도메인이나 로컬 환경에서 자바스크립트를 사용한 api 등의 리소스 호출시 동일 출처(같은 호스트네임)가 아니더라도 정상적으로 사용 가능하도록 도와주는 설정
pip install flask_cors
# app.py
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
위의 예시와 같이 사용할 수 있음
flask_ref) https://pinocc.tistory.com/175
flask_ref) https://flask-docs-kr.readthedocs.io/ko/latest/quickstart.html
blueprint_ref) https://www.finterstella.com/11
flask_cors_ref) https://webisfree.com/2020-01-01/python-flask에서-cors-cross-origin-사용하기