2013-05-03 20 views
51

Flaskでurl_forをどのように使ってフォルダ内のファイルを参照していますか?たとえば、staticフォルダにいくつかの静的ファイルがありますが、そのうちのいくつかはstatic/bootstrapのようなサブフォルダに含まれている可能性があります。url_forでFlaskの静的ファイルにリンクする

static/bootstrapからファイルを提供しようとすると、エラーが発生します。

<link rel=stylesheet type=text/css href="{{ url_for('static/bootstrap', filename='bootstrap.min.css') }}"> 

これでサブフォルダに含まれていないファイルを参照できます。

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='bootstrap.min.css') }}"> 

url_forで静的ファイルを参照する正しい方法は何ですか? url_forを使用して、任意のレベルで静的ファイルへのURLを生成するにはどうすればよいですか?

答えて

105

デフォルトでは、静的ファイルの場合はstatic endpointです。 Flaskアプリケーションには次の引数があります。

static_url_path:ウェブ上の静的ファイルに異なるパスを指定するために使用できます。既定値はstatic_folderフォルダーの名前です。

static_folder:提供する静的ファイルのあるフォルダは、static_url_pathです。デフォルトでは、アプリケーションのルートパスの「静的」フォルダになります。

それはfilename引数がstatic_folderでファイルへの相対パスを取り、static_url_defaultと組み合わせて、相対パスに変換することを意味します:

url_for('static', filename='path/to/file') 

static_folder/path/to/fileからURLパスへのファイルパスを変換しますstatic_url_default/path/to/file

<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='bootstrap/bootstrap.min.css') }}"> 

(デフォルト設定を使用して)に変換されます:

<link rel="stylesheet" type="text/css" href="static/bootstrap/bootstrap.min.css"> 

はまたurl_for documentationを見て、あなたがstatic/bootstrapフォルダからファイルを取得したい場合

は、だから、このコードを使用します。

関連する問題