LoginSignup
0
0

<Flask備忘録>ファクトリ、Blueprintなど

Posted at

ファクトリなるものをつかってflaskアプリの生成、初期化を行う

from flask import Flask

def create_app(test_config=None):

    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'データベースファイル名'),
    )

なぜか
  • 開発環境と本番環境で異なるデータベース設定を使用したいと考えています。
  • 機密性の高いSECRET_KEYやデータベースのURLは公開したくない(公開されるべきではありません。)

したがって、

  • 開発環境: ローカルマシン上で動作し、SQLiteデータベースdev.sqliteを使用
  • 本番環境: サーバー上で動作し、PostgreSQLデータベースを使用

という使い分けをしたい。

instance_relative_config=Trueを使用すると、Flaskはインスタンスフォルダ内の設定ファイルから設定を読み込むようになります。このフォルダは通常、アプリケーションのルートディレクトリの外に配置され、バージョン管理システムに含まれません。
以下のようにファイルを切ります。

/instance
    development.py
    production.py
    staging.py

例えばinstance/development.pyはこんな感じです。

# instance/development.py
SECRET_KEY = 'development_key'
DEBUG = True
DATABASE_URI = 'sqlite:///development.db'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0