Flask 초기세팅

Jina·2020년 5월 31일
0

Flask

목록 보기
1/1

Flask 설치

가상환경을 만들고 flask를 설치하기
flask는 아래의 명령어를 이용하여 설치 가능

pip install flask

Flask

app.py

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__'

파일이 인터프리터에 의해서 실행되는 경우를 의미

  • 파이썬 파일이 실행되는 경우
    • 인터프리터에 의해서 직접 실행
    • 다른 파이썬에 모듈로 import 되어서 사용될 때

위의 코드는 인터프리터에 의해서 직접 실행될 경우에만 실행하도록 하고 싶은 코드 블럭이 있는 경우에 사용
따라서 app.run() 위에 이 문장을 사용하면 우리가 실행한 서버가 현재 동작되는 유일한 서버라는 것을 보장할 수 있음

debug

디버그모드

  • 서버는 코드변경을 감지하고 자동으로 리로드
  • 문제가 발생하면 문제를 찾을 수 있도록 디버거를 제공
  • 개발환경에서는 사용하는 것이 좋으나 운영 환경에서는 사용하지 않는 것이 좋음

debug 활성화하는 방법 1

app.debug = True
app.run()

debug 활성화하는 방법 2

app.run(debug=True)

Blueprint

  • Blueprint는 어플리케이션을 구분된 컴포넌트로 배열하는 기법
    • 어플리케이션을 Blueprint의 집합으로 고려함
    • 연관있는 여러 개의 뷰를 그룹으로 묶어서 처리함
    • 각각의 뷰를 앱에 직접 등록하는 대신 블루프린트에 등록하고 이 블루프린트를 앱에 등록시킴
  • 어플리케이션 상에 URL 접두어와/또는 서브도메인으로 블루프린트를 등록
  • 어플리케이션에 여러 URL 규칙을 가진 블루프린트를 여러번 등록

사용 예시

아래의 예시는 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가 나타남!

run.py

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"

Flask CORS

CORS(Cross Origin Resource Sharing)

다른 도메인이나 로컬 환경에서 자바스크립트를 사용한 api 등의 리소스 호출시 동일 출처(같은 호스트네임)가 아니더라도 정상적으로 사용 가능하도록 도와주는 설정

flask_cors 설치

pip install flask_cors

flask_cors 사용법

# app.py
from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

위의 예시와 같이 사용할 수 있음


REF

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-사용하기

0개의 댓글