teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

ちょこちょこ書き足した

2018/08/30 15:21

投稿

quickquip
quickquip

スコア11310

answer CHANGED
@@ -4,10 +4,10 @@
4
4
  ----
5
5
 
6
6
  ```
7
- import create_app
7
+ import create_app # ここに書けるのはモジュールなので、__init__.py にあるcreate_app関数であるはずがない
8
8
  impoet modulename
9
9
 
10
- x = app.config["TOKEN"]
10
+ x = app.config["TOKEN"] # 引用されたソースに名前appに束縛している箇所、importしている箇所がない
11
11
  ```
12
12
 
13
13
  - create_app という名前の**モジュール**をインポートしているっぽいが、上のコードの`create_app`は**モジュールで定義された名前**なので、別物のはず。ここでimportしているのは一体なに?
@@ -19,7 +19,8 @@
19
19
  ```
20
20
  def create_app(config_name):
21
21
  app = Flask(__name__)
22
- app.config.from_object(config[config_name])
22
+ app.config.from_object(config[config_name]) # 引用されたソースに名前configとconfig_nameに束縛している箇所、importしている箇所がない
23
+ return app # 多分こう
23
24
  ```
24
25
 
25
26
  - この`config`や`config_name`はどこからでてきた?
@@ -47,6 +48,8 @@
47
48
 
48
49
  取り出した属性から全てが大文字な(正確には`isupper()`が真を返す)属性名だけを選択して、それをキー/値としてconfigに取り込む。
49
50
 
51
+ これは理解したのでしょうか?
52
+
50
53
  ----
51
54
 
52
55
  ということで、このconfig.pyが**プロジェクトルート(実行しているスクリプトと同階層)に置かれている**という前提条件で、
@@ -56,4 +59,9 @@
56
59
  app.config.from_object('config.config')
57
60
  ```
58
61
 
59
- が実行されているなら、configに取り込まれると思います。
62
+ が実行されているなら、configに取り込まれると思います。
63
+
64
+ ----
65
+
66
+ 環境に依って動的に `app.config.from_object` する相手が変わるなら、実際ここでなにを引数に`from_object`を読んでいるのかを確かめ、直後に設定が取り出せるかを確認するのがいいと思います。
67
+ `app.config.from_object` が呼ばれているかも確かめられるでしょう。

2

追記

2018/08/30 15:21

投稿

quickquip
quickquip

スコア11310

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  使い方は`app.config["TOKEN"]`で問題ないはずなのでそれがうまくいってないなら、別のどこかにおかしいところがあるのだと思いますよ。
2
+ (というよりもここに引用されているソースからでは、`app.config.from_object(config[config_name])`で設定がちゃんとされただろうという確信は**全然持てない**わけです)
2
3
 
3
-
4
4
  ----
5
5
 
6
6
  ```

1

追記

2018/08/29 02:14

投稿

quickquip
quickquip

スコア11310

answer CHANGED
@@ -1,3 +1,8 @@
1
+ 使い方は`app.config["TOKEN"]`で問題ないはずなのでそれがうまくいってないなら、別のどこかにおかしいところがあるのだと思いますよ。
2
+
3
+
4
+ ----
5
+
1
6
  ```
2
7
  import create_app
3
8
  impoet modulename