Flaskのurl_for
を使用して、フォルダー内のファイルを参照するにはどうすればよいですか?たとえば、static
フォルダーにいくつかの静的ファイルがあり、その一部はstatic/bootstrap
などのサブフォルダーにあります。
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を生成するにはどうすればよいですか?
デフォルトでは、静的ファイルに対して static
エンドポイント があります。また、 Flask
アプリケーションには次の引数があります。
static_url_path
:は、Web上の静的ファイルに別のパスを指定するために使用できます。デフォルトは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
に変換します。
したがって、static/bootstrap
フォルダーからファイルを取得するには、次のコードを使用します。
<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 もご覧ください。
私の場合、nginx設定ファイルに特別な指示がありました。
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|Zip|rar)$ {
try_files $uri =404;
}
NginxはFlaskについて何も知らないため、すべてのクライアントは「404」を受け取りました。
それが誰かを助けることを願っています。