2016-12-21 45 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

你就是 - 修好了! –