2012-04-23 9 views
4

app.yamlから私のmain.pyにいくつかの設定変数を渡そうとしています。私はコードからapp.yamlにアクセスするための構文を見つけることができませんでした。Google App Engine Pythonでapp.yamlからmain.pyに変数を渡す方法

例えば、ユーザーが自分のクライアント番号をapp.yamlに入れ、main.pyからmain.htmlに渡すようにしたいとします。 main.pyに変数を渡して渡すのは簡単ですが、app.yamlに入れる方が良いと思われます。

例:サポートされていない、とあなたはあなたのアプリケーションを置くべき

app.yamlを

application: xyz 
    version: 1 
    runtime: python27 
    ... 
    clientID: (ID here) 

main.py

myID = appYAML.clientID 
    ... 
    values = {'xyz': blah.blah, 'myID': myID } 

main.htmlを

... 
    <script> 
     ... 
     {% ifequal myID %} 
     my_client = {{myID}} 
     ... 
    </script> 

答えて

9

、App Engineはこれをサポート[1]:https://cloud.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Defining_environment_variables:これを使用する方法についての

- In your app.yaml file, you can include an env_variables stanza that will set 
    the given environment variables in your application's runtime. 

情報はで入手可能です。あなたが呼び出すことができますmain.py以内に、この変数を使用する必要がある場合

env_variables: 
    variable_name: '<YOUR VALUE>' 

+0

これは非常に役に立ちます。私は1.6.5がリリースされた後、私のアプリのこの部分を待って作業します。 ありがとう –

+0

これを使用する方法に関する情報は、次のURLから入手できます。https://developers.google.com/appengine/docs/python/runtime#The_Environment –

4

固有のse自分のYAMLファイルに入れます。 1.6.5リリースで

+1

、これはJavaで行うことができます:https://developers.google.com/appengine/docs/java/config/appconfig#System_Properties_and_Environment_Variables –

+0

app.yamlでそれをしない理由はありません。 1つまたは2つのフィールドについては、実際には意味をなさないことがあります。とにかく、私は別のYAMLファイルの変数にアクセスする方法を見たことさえありません。あなたは1つ持っていますか? –

+0

@ MarkFinch:あなたは別のYAMLファイルを読んで、YAMLパーサーを使う必要があります。これに対してapp.yamlを使用する際の問題は、app.yamlがアプリケーションファイルとしてサーバーにアップロードされないため、アプリケーション内から手動で読み取ったり解析したりすることができないことです。 – geoffspear

2

あなたは、プログラムのはos.environ辞書にそれらを利用できるようにするapp.yamlをで変数を定義することができますこのように、それ:

import os 
CUSTOM_SETTINGS = os.environ['variable_name'] 

ドキュメント:不思議https://developers.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Defining_environment_variables

+0

これは変数の設定には最適ですが、どのように取得するのですかそれらを使用しますか? –

+0

@SuatAtanPhD: '' myapp.settings''のような文字列のenv varをintに変換しようとするのはなぜですか?または、あなたは 'DJANGO_SETTINGS_MODULE = os.environ ['DJANGO_SETTINGS_MODULE']'を持っているだけでしたか? –

+0

あなたは右のダン。ありがとう! – coto

関連する問題