Flask Tutorial 3

woody·2019년 11월 26일
0
post-thumbnail

https://flask.palletsprojects.com/en/1.1.x/
Flask 응용 프로그램은 Flask클래스 의 인스턴스입니다 . 구성 및 URL과 같은 응용 프로그램에 대한 모든 것이이 클래스에 등록됩니다.
Flask인스턴스를 전역 적으로 생성하는 대신 함수 내에서 생성합니다. 이 기능을 응용 프로그램 팩토리라고 합니다. 응용 프로그램에 필요한 모든 구성, 등록 및 기타 설정은 함수 내에서 발생하면 응용 프로그램이 반환됩니다.

The Application Factory

flaskr디렉토리를 작성하고 init.py파일을 추가 하십시오. 이 init.py이중 역할을 수행합니다. 응용 프로그램 팩토리를 포함하고 flaskr 디렉토리에 패키지로 처리해야 한다는 것을 Python에 알립니다.

$ mkdir flaskr

flaskr/__init__.py

import os

from flask import Flask


def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    if test_config is None:
        # load the instance config, if it exists, when not testing
        app.config.from_pyfile('config.py', silent=True)
    else:
        # load the test config if passed in
        app.config.from_mapping(test_config)

    # ensure the instance folder exists
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass

    # a simple page that says hello
    @app.route('/hello')
    def hello():
        return 'Hello, World!'

    return app
  1. app = Flask(__name__, instance_relative_config=True) : 인스턴스를 만듭니다.
    • __name__현재 파이썬 모듈의 이름입니다. 앱은 경로를 설정하기위한 위치를 알아야하며,이를 name알려주는 편리한 방법입니다.
    • instance_relative_config=True구성 파일이 인스턴스 폴더에 상대적임을 앱에 알려줍니다 . 인스턴스 폴더는 flaskr패키지 외부에 있으며 구성 비밀 및 데이터베이스 파일과 같이 버전 제어를 위해 커밋해서는 안되는 로컬 데이터를 보유 할 수 있습니다.
  2. app.config.from_mapping() : 앱이 사용할 기본 구성을 설정합니다.
    • SECRET_KEYFlask 및 확장 프로그램에서 데이터를 안전하게 유지하는 데 사용됩니다. 'dev'개발 중에 편리한 가치를 제공하도록 설정 되었지만 배포시 임의의 값으로 재정의해야합니다.
    • DATABASESQLite 데이터베이스 파일이 저장 될 경로입니다. app.instance_path Flask가 인스턴스 폴더에 대해 선택한 경로 인 아래 에 있습니다. 다음 섹션에서 데이터베이스에 대해 자세히 알아 봅니다.
  3. app.config.from_pyfile() : config.py 인스턴스 폴더 의 파일에서 가져온 값으로 기본 구성을 재정의 합니다. 예를 들어, 배포 할 때 real을 설정하는 데 사용할 수 있습니다 SECRET_KEY.
    • test_config팩토리로 전달 될 수 있으며 인스턴스 구성 대신 사용됩니다. 따라서 튜토리얼에서 나중에 작성할 테스트는 구성한 개발 값과 독립적으로 구성 할 수 있습니다.
  4. os.makedirs(app.instance_path)존재 하는지 확인하십시오 . Flask는 인스턴스 폴더를 자동으로 생성하지 않지만 프로젝트에서 SQLite 데이터베이스 파일을 생성하므로 생성해야합니다.
  5. @app.route()간단한 라우트를 작성하여 나머지 학습서에 들어가기 전에 애플리케이션이 작동하는 것을 볼 수 있습니다. URL /hello과 응답을 반환하는 함수 ( 이 경우 문자열) 사이에 연결을 만듭니다 .'Hello, World!'

Run The Application

이제 flask명령을 사용하여 응용 프로그램을 실행할 수 있습니다 . 터미널에서 Flask에게 응용 프로그램을 찾을 위치를 알려주고 개발 모드에서 실행하십시오. 여전히 패키지가 flaskr아니라 최상위 디렉토리에 있어야 합니다.

$ export FLASK_APP=flaskr
$ export FLASK_ENV=development
$ flask run
Serving Flask app "flaskr"
Environment: development
Debug mode: on
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Restarting with stat
Debugger is active!
Debugger PIN: 855-212-761

0개의 댓글