python: Flaskでapp.config.from_object(__name__) する理由

プログラミング
スポンサーリンク




スポンサーリンク

Q: app.config.from_object(name)は何のための処理なのか

FlaskのチュートリアルStep 2: セットアップには、下記のような部分があります。

ファイル名: flaskr.py

...

# configuration
DATABASE = '/tmp/flaskr.db' 
DEBUG = True 
SECRET_KEY = 'development key' 
USERNAME = 'admin' 
PASSWORD = 'default'

...

# create our little application :) 
app = Flask(__name__) 
app.config.from_object(__name__)

...

チュートリアルには、

flom_object()では、与えられたオブジェクトの内で 大文字の変数をすべて取得します。大変便利ですね。今回は flask.py ファイル自体を渡していますが、コンフィグを別ファイルに書いた場合には、適宜書き換えてください。

と書いてあります。

大文字の変数を全て取得しているので、DATABASEやUSERNAMEなどの変数を取得しているのですが、何のためにこの処理はあるのでしょう?

A: configurationを辞書型として扱うための処理

app.configの内容をみてみると、

Config {... 'DATABASE': '/tmp/flaskr.db', 'DEBUG': True, 'SECRET_KEY': 'development key', 'USERNAME': 'admin', 'PASSWORD': 'default'}

となっており、configrationに記載されているデータが、辞書型として取り込まれている事がわかります。

この処理を行っている部分が、app.config.from_object(__name__)です。

これにより、変数を直接指定するのではなく、

app.config['DATABASE']

というように指定してあげる事で、値を取得できるようになります。

今回は同一のファイル名にconfigrationを記載しているので辞書型として扱えるメリット感じませんが、例えばconfigrationを特定のファイルで一括管理して読み込ませたいときは

app.config.from_object("ファイル名")

としてあげる事で、読み込む事ができます。

おすすめの書籍

Pythonフレームワーク Flaskで学ぶWebアプリケーションのしくみとつくり方

webアプリケーションの開発に必要な、

  • サーバサイドの開発技術
  • フロントエンドの開発技術
  • データベース技術

を学ぶ事ができ、開発を行うために必要な知識を一通り手に入れる事ができます。

ソシムの書籍は他にも持っていますが、初心者にもわかりやすく書かれているのでお勧めの1冊です。

コメント

タイトルとURLをコピーしました