2011-08-18 11 views
45

私はFlaskバージョン0.7を使用しています。私は、設定ファイルに静的コンテンツのパスを保存し、Flask - テンプレートのconfig変数へのアクセス

app.config.from_envvar(<file_name>) 

私はビューを介して変数を渡すことなく、テンプレートでこの設定変数にアクセスできるようにすることはできますを使用して、それをロードしていますか?

+0

私は、フック設定変数に設定を読み込むためにapp.config.from_pyfile()を使用しました。フラスコ0.6以来; configは、グローバル変数の1つで、デフォルトでJinja2テンプレートで利用可能です。その後、テンプレート内の辞書オブジェクトとして設定変数に簡単にアクセスできます。 – ranendra

答えて

79

デフォルトでフラスコ(hereは完全なリスト)によってテンプレートのコンテキストに渡されるいくつかのグローバル変数があり、そのうちの1つはconfigで、テンプレートからアプリケーション構成にアクセスできます。辞書であるため、config['MY_CONFIGURATION']またはconfig.MY_CONFIGURATIONという構文を使用してアクセスすることができます(dict項目にアクセスするためのこの構文はJinjaに固有です)。

一方、各ビューで明示的に渡すことなくテンプレートに任意のデータを渡す場合は、context processorsを使用する必要があります。

+15

私はちょうど "大文字の値は実際に設定オブジェクトに格納されている"ことに注意したいと思います。これは、ポスターと同じ質問に直面したときに私に数分の混乱を与えました。 – mikewaters

+1

設定値をデバッグモードでPythonファイルに保存する場合、このファイルの変更は監視されません。 – Epoc

+4

テンプレートの使用例: '{{config.MY_CONFIGURATION}}' –

関連する問題