2016-12-21 11 views
4

Flaskを使用してブラウザでローカルにデータを表示するツールを構築しています。私はコマンドラインの引数としてデータを含むディレクトリを渡し、レンダリングを行うために適切なルーティング関数に渡したいと思います。Flaskルートにコマンドライン引数を表示させるにはどうすればよいですか?

これは私が欲しいものを行いますが、グローバル変数で:

dataDir = None 

def initializeData(pathname): 
    global dataDir 
    dataDir = pathname 

@app.route('/') 
def home(): 
    # Use dataDir as desired 

if __name__ == '__main__': 
    initializeData(sys.argv[1]) 
    app = Flask(__name__) 
    app.run() 

コマンドラインと私のルートの間で通信するためのより良い方法はありますか?

答えて

7

フラスコアプリにはconfigというプロパティがあります。また、このコードはNameErrorで失敗します。あなたは次のようなものを望みます:

import sys 
from flask import Flask 

app = Flask(__name__) 


@app.route('/') 
def home(): 
    return 'You wanted {!r} directory'.format(app.config.get('some_setting')) 

if __name__ == '__main__': 
    app.config['some_setting'] = sys.argv[1] 
    app.run() 
+0

これは 'app.config.get'でしょうか?私はそうでなければNameErrorを取得します。 – JETM

+0

あなたは正しいです! –

関連する問題