xxx.pyをどう修正したら、app.configでconfigファイルで設定している定数の文字列を使うことできるのでしょうか?
init.py
def init_db(app): db.init_app(app) Migrate(app, db) def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) return app
xxx.py
import create_app impoet modulename x = app.config["TOKEN"] ... ... ...
config.py
Class config: TOKEN = 'token' ... ...
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/29 00:06
回答2件
0
自己解決
from flask import current_appをし、currnt_app.config[""]をグローバルではなく、関数内に書くことでアクセスができるようになる。
投稿2018/08/30 15:59
編集2018/09/02 05:59総合スコア123
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/30 23:14
2018/08/31 01:44
2018/09/02 06:05
0
使い方はapp.config["TOKEN"]
で問題ないはずなのでそれがうまくいってないなら、別のどこかにおかしいところがあるのだと思いますよ。
(というよりもここに引用されているソースからでは、app.config.from_object(config[config_name])
で設定がちゃんとされただろうという確信は全然持てないわけです)
import create_app # ここに書けるのはモジュールなので、__init__.py にあるcreate_app関数であるはずがない impoet modulename x = app.config["TOKEN"] # 引用されたソースに名前appに束縛している箇所、importしている箇所がない
-
create_app という名前のモジュールをインポートしているっぽいが、上のコードの
create_app
はモジュールで定義された名前なので、別物のはず。ここでimportしているのは一体なに? -
この
app
はどこからでてきた?
def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) # 引用されたソースに名前configとconfig_nameに束縛している箇所、importしている箇所がない return app # 多分こう
- この
config
やconfig_name
はどこからでてきた? - つくった
app
をreturnしてないけどただ捨ててるだけ?
というすべてが謎なコードになっているので、答えれるわけがない。
これが動いているコードではないんだろうな、と思うだけ。
たぶん、引用時の問題だろうとは思うけど……。
前にconfig.from_object
が何をするかを調べたメモがあるので書いておきますね。
引数が文字列の場合
- まず
:
'を.
に変換する。 __import__(引数)
して成功するか確認。成功したら(ロードされているということだから)sys.modules[引数]
を返して終わり。- 初めの
.
でsplitして、前部分をモジュール名、後部分をオブジェクト名とする。 - まず
__import__(モジュール名, None, None, [オブジェクト名])
する。失敗したら__import__(モジュール名)
する。どっちかが成功したらモジュールが取り出せたものとして、getattr(モジュール, オブジェクト名)
してオブジェクトを取り出す。 - 返ってきた値をdir関数に渡して属性を取り出す。
引数が文字列でない場合引数自身をdirに渡して名前空間を属性を取り出す。
取り出した属性から全てが大文字な(正確にはisupper()
が真を返す)属性名だけを選択して、それをキー/値としてconfigに取り込む。
これは理解したのでしょうか?
ということで、このconfig.pyがプロジェクトルート(実行しているスクリプトと同階層)に置かれているという前提条件で、
app.config.from_object('config.config')
が実行されているなら、configに取り込まれると思います。
環境に依って動的に app.config.from_object
する相手が変わるなら、実際ここでなにを引数にfrom_object
を読んでいるのかを確かめ、直後に設定が取り出せるかを確認するのがいいと思います。
app.config.from_object
が呼ばれているかも確かめられるでしょう。
投稿2018/08/29 00:15
編集2018/08/30 15:21総合スコア11202
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/29 01:16 編集
2018/08/29 01:33
2018/08/29 02:50 編集
2018/08/29 01:46
2018/08/30 15:27
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。