소개
이 랩에서는 Flask 애플리케이션에서 구성을 처리하는 방법을 배우게 됩니다. 구성은 디버그 모드 전환, 비밀 키 설정, 기타 환경별 변수 설정 등과 같이 다양한 환경에 따라 애플리케이션의 설정을 변경할 수 있도록 합니다.
참고: 코드 파일을 직접 생성하고 환경에서 실행해야 합니다. Web 5000 에서 Flask 서비스 상태를 미리 볼 수 있습니다.
이 랩에서는 Flask 애플리케이션에서 구성을 처리하는 방법을 배우게 됩니다. 구성은 디버그 모드 전환, 비밀 키 설정, 기타 환경별 변수 설정 등과 같이 다양한 환경에 따라 애플리케이션의 설정을 변경할 수 있도록 합니다.
참고: 코드 파일을 직접 생성하고 환경에서 실행해야 합니다. Web 5000 에서 Flask 서비스 상태를 미리 볼 수 있습니다.
먼저, 기본적인 Flask 애플리케이션을 생성해 보겠습니다. app.py라는 파일을 생성하고 다음 코드를 추가합니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, Flask!'
애플리케이션을 실행하려면 터미널에서 다음 명령을 실행합니다.
python app.py
웹 브라우저를 열고 http://localhost:5000을 방문하여 "Hello, Flask!" 메시지를 확인합니다.
이제 Flask 애플리케이션에 몇 가지 기본 구성을 추가해 보겠습니다. 동일한 app.py 파일에 다음 코드를 추가합니다.
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'mysecretkey'
DEBUG 구성은 개발 중에 유용한 오류 메시지를 제공하는 디버그 모드를 활성화합니다. SECRET_KEY 구성은 세션 쿠키 및 기타 보안 관련 요구 사항을 안전하게 서명하는 데 사용됩니다.
구성 값에 액세스하려면 app.config 딕셔너리를 사용할 수 있습니다. 예를 들어, SECRET_KEY의 값을 출력하려면 hello 라우트에 다음 코드를 추가합니다.
@app.route('/')
def hello():
secret_key = app.config['SECRET_KEY']
return f'Hello, Flask! Secret Key: {secret_key}'
Flask 애플리케이션을 다시 시작하고 http://localhost:5000을 방문하여 비밀 키가 포함된 업데이트된 메시지를 확인합니다.
코드에 구성 값을 하드코딩하는 것은, 특히 민감한 정보의 경우, 이상적이지 않습니다. Flask 는 별도의 파일에서 구성을 로드하는 방법을 제공합니다. config.py라는 새 파일을 생성하고 다음 코드를 추가합니다.
DEBUG = False
SECRET_KEY = 'myothersecretkey'
app.py 파일에서 이전 구성 코드를 다음으로 바꿉니다.
app.config.from_object('config')
from_object 메서드는 config 모듈에서 구성을 로드합니다. 이제 DEBUG 및 SECRET_KEY 값은 config.py 파일에서 로드됩니다.
Flask 애플리케이션을 다시 시작하고 http://localhost:5000을 방문하여 새로운 구성 값으로 업데이트된 메시지를 확인합니다.
개발, 프로덕션, 테스트 등 다양한 환경에 대해 서로 다른 구성을 갖는 것은 일반적입니다. Flask 를 사용하면 환경 변수를 기반으로 구성을 전환할 수 있습니다. config_dev.py라는 새 파일을 생성하고 다음 코드를 추가합니다.
DEBUG = True
SECRET_KEY = 'devsecretkey'
다음 코드를 사용하여 config_prod.py라는 다른 파일을 생성합니다.
DEBUG = False
SECRET_KEY = 'prodsecretkey'
app.py 파일에서 이전 구성 코드를 다음으로 바꿉니다.
import os
if os.environ.get('FLASK_ENV') == 'production':
app.config.from_object('config_prod')
else:
app.config.from_object('config_dev')
FLASK_ENV 환경 변수는 환경을 결정하는 데 사용됩니다. 이 변수가 'production'으로 설정되면 프로덕션 구성이 로드되고, 그렇지 않으면 개발 구성이 로드됩니다.
FLASK_ENV 환경 변수를 'production'으로 설정하고 Flask 애플리케이션을 다시 시작합니다. http://localhost:5000을 방문하여 프로덕션 구성 값으로 업데이트된 메시지를 확인합니다.
Flask 는 특정 배포에 특정한 구성 파일을 저장하기 위한 인스턴스 폴더를 제공합니다. 이를 통해 배포 관련 구성을 나머지 코드와 분리할 수 있습니다. 기본적으로 Flask 는 애플리케이션과 동일한 디렉토리에 instance라는 폴더를 사용합니다.
app.py 파일과 동일한 디렉토리에 instance라는 새 폴더를 생성합니다. instance 폴더 내에 config.cfg라는 파일을 생성하고 다음 코드를 추가합니다.
DEBUG = True
SECRET_KEY = 'instancekey'
app.py 파일에서 구성 코드 앞에 다음 코드를 추가합니다.
app.instance_path = os.path.abspath(os.path.dirname(__file__))
app.config.from_pyfile('config.cfg')
instance_path는 instance 폴더의 절대 경로로 설정됩니다. from_pyfile 메서드는 인스턴스 폴더의 config.cfg 파일에서 구성을 로드합니다.
Flask 애플리케이션을 다시 시작하고 http://localhost:5000을 방문하여 인스턴스 구성 값으로 업데이트된 메시지를 확인합니다.
이 랩에서는 Flask 애플리케이션에서 구성을 처리하는 방법을 배웠습니다. 기본적인 구성 값을 설정하고, 파일에서 구성을 로드하며, 환경 변수를 기반으로 구성을 전환하고, 배포 관련 구성에 인스턴스 폴더를 사용하는 방법을 배웠습니다. 구성은 강력하고 유연한 Flask 애플리케이션을 구축하는 데 중요한 측면입니다.