2016-05-02 6 views
0

私のフラスコのアプリケーションでjavascriptの設定変数が必要です。現在、私は経由で設定変数にアクセス:javascriptのフラスコ設定にアクセスするには?

@app.route('/api/getconfigs/') 
def get_config_variable(): 
    return config['VARIABLENAME'] 

これはJavaScriptでフラスコの設定を取得する唯一の方法ですか?これを行うベストプラクティスは何でしょうか?

答えて

4

あなたはAPI呼び出しの一部として値が必要な場合は、[はい、エンドポイントから値を送信することは正しいです。テンプレートをレンダリングする場合は、JavaScriptの値をクライアントに送信してレンダリングすることができます。

テンプレート内では、config['key']またはconfig.keyは、設定内の任意の値にアクセスします。 JavaScriptとしてレンダリングするので、tojsonフィルタを使用して有効な値を表示します。

var debug = {{ config['DEBUG']|tojson }}; 
0

あなたはそうのようなあなたのJinja2のグローバルに固有の変数を読み込むことができます:

app.jinja_env.globals.update(VARIABLENAME=config['VARIABLENAME']) 

そして、常に含まベース・テンプレートにそのようなあなたのjavascriptに変数をロードします。

<script> 
    var config = {}; 
    config.VARIABLENAME = {{VARIABLENAME}}; 
</script> 

それとも、そのようなあなたのJinja2ののENVに全体の設定を投げる:

app.jinja_env.globals.update(config=app.config) 

そしてそれはコンフィグで発見された場合にのみ、特定の変数を挿入します。

{% if config['VARIABLENAME'] %} 
    <script> 
     var config = {}; 
     config.VARIABLENAME = {{config['VARIABLENAME']}}; 
    </script> 
{% endif %} 
+1

'config'を変数がすでにテンプレートに注入されていますhttp://flask.pocoo.org/docs/0.10/templating/#standard-context – davidism

+1

また、これはほとんどの値のために失敗し、あなたはでしょう'| tojson'フィルタを使う必要があります。 – davidism

関連する問題