2016-09-25 18 views
0

私はFlaskアプリケーションを実行しています。ここでは、ユーザーがテキストボックスに何かを入力してGETリクエストを行います。 GET要求を受け取ったバックエンドコードは、クエリパラメータに対していくつかの計算を行い、計算結果として作成された2つまたは3つの新しく作成されたjsonファイルの名前を返します。ユーザーは、ユーザーが選択したいくつかのフィルタリングに応じて、JSONファイルから作成されたグラフを表示できます。私の問題は、これらのjsonファイルをdataというフォルダに保存したいということです(そして、さまざまな理由と速い応答のために時間が経つと蓄積されます)。マイアプリの構造はおおよそ次のとおりです。Flaskで動的に生成されたファイルを処理する

/data 
/static 
/templates 
/python src files 

今、私は静的下のファイルを取得するためにHTMLコードを取得することができますが、データフォルダの下のファイルのために働くdoes notの。 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'で、 '/ data'ではありません。 – xli

+0

私はそれを試していただきありがとうございます、それが動作する場合、私はあなたの答えを受け入れるでしょう。それは私に数時間かかります。どうもありがとう – user3079275

0

なぜアクション機能にキャッシングロジックがないのですか?ファイルが既にキャッシュされている場合は、1つのファイルからロードしてください。私は、あなたはまた、アクセス制御を望むだろうイメージングし、それはHTTPサービスから静的ファイルを提供することによっては起こりません。

+0

私はアクション機能という用語を理解していませんが、JSONファイルを要求するフロントエンドコードですか? htmlコードは、バックエンドコードによって行われた計算結果に依存するため、解析する必要があるJSONファイルの名前を認識しません。バックエンドがJSONファイルの名前で応答を返すと、htmlコードはユーザーのやり取りに応じてそれらをフィルタリングできます。 – user3079275

関連する問題