2016-09-25 51 views
0

我正在運行Flask應用程序,其中用戶通過在文本框中輸入內容來發出GET請求。接收GET請求的後端代碼對查詢參數執行一些計算,並返回2或3個新創建的作爲計算結果創建的json文件的名稱。然後,用戶可以查看由JSON文件創建的一些圖,具體取決於用戶選擇的某些過濾。我的問題是,我希望這些json文件存儲在一個名爲data的文件夾中(並且由於各種原因和更快的響應,它們隨時間積累)。我的應用程序的結構大致是:在Flask中爲動態生成的文件提供服務

/data 
/static 
/templates 
/python src files 

現在,我可以得到HTML代碼瞭解下靜態文件,但它不爲數據文件夾下的文件。如何讓Flask知道數據文件夾的GET請求被允許?

回答

1

您可以使用send_from_directory()/data提供文件。

@app.route('/data/<path:filepath>') 
def data(filepath): 
    return send_from_directory('data', filepath) 
+0

謝謝,我會試試這個,文件名是否可以在另一個目錄下呢?例如/data/dir1/f1.json或/data/dir2/f2.json等 – user3079275

+0

我修改了我的答案以允許子目錄。此外,以前有一個小錯誤:它應該是數據而不是目錄路徑的「/ data」。 – xli

+0

謝謝我嘗試後,如果它的作品,我會接受你的答案。這將需要我幾個小時。非常感謝 – user3079275

0

爲什麼在動作函數中沒有緩存邏輯?如果該文件已被緩存,則將其從單個文件加載中輸出。我想成像你也想要訪問控制,這不會通過從HTTP服務提供靜態文件發生。

+0

我不理解術語動作函數,它是請求JSON文件的前端代碼嗎? html代碼不知道它需要解析的JSON文件的名稱,因爲它取決於後端代碼完成的計算結果。一旦後端將回應與JSON文件的名稱一起發回,html代碼就可以根據用戶交互過濾它們。 – user3079275

相關問題