2013-04-08 9 views
10

フラスコを使用して静的ファイルを提供しようとしています。私はurl_for関数の使い方を知らない。動的なコンテンツを生成するすべての私のルートは正常に動作している、私はなurl_forを輸入してきましたが、私はこのコードを持っている場合:(その中でいくつかの基本的なHTMLを持っている)私の「hi.html」ファイルと一緒にpythonフラスコ - 静的ファイルの提供

@app.route('/') 
def home(): 
    return url_for('static', filename='hi.html') 

はで座っディレクトリの静的、私はページをロードするときに私が取得することは、文字通り、このです:私は間違って

/static/hi.html

をなurl_for使用していますか?

答えて

16

url_forは、正確にはそのファイルのURLを返します。あなたはそのファイルのURLにredirectしたいと思うようです。代わりに、URLのテキストをクライアントに送信するだけです。

from flask import url_for, redirect 

@app.route('/') 
def home(): 
    return redirect(url_for('static', filename='hi.html')) 
+0

もちろん。私はアホです。あなたは頭がいい。ありがとうございました。 – user1276273

+11

ここに馬鹿はいないが、ただ知りません。静的ファイルの提供に関するsberryのアドバイスも適切です。 –

6

あなたは何をしているのか正しい出力を得ています。 url_forはのURLをというURLで生成します。あなたの場合、URLをstaticディレクトリのhi.htmlファイルに生成しています。あなたは、出力ファイルを実際にしたい場合は、

from flask import render_template, url_for 

... 

    return render_template(url_for("static", filename="hi.html")) 

したいと思う。しかし、この時点で、あなたの静的なディレクトリが(それは生きるために設定され、これまで)templatesディレクトリの下にする必要があります。

このような静的なhtmlファイルを提供する場合は、ウェブサーバーから直接/static/.*にトラフィックをルーティングして、フラスコアプリケーションの外部に配信することをおすすめします。 nginxやapacheを使ってこれを行うには、Web上にたくさんの例があります。

+0

ありがとう - 私は開発中ですが、私はフラスコを使ってそれらを提供できるようになりたいと思っています。それだけで私を狂ってしまっていました。 – user1276273

関連する問題