使用url_for链接到Flask静态文件
如何在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上的静态文件指定一个不同的path。 默认为static_folder
文件夹的名称。
static_folder
:应该在static_url_path
提供静态文件的文件夹。 默认为应用程序根path中的“静态”文件夹。
这意味着filename
参数将在static_folder
文件的相对path转换为与static_url_default
结合的相对path:
url_for('static', filename='path/to/file')
会将文件path从static_folder/path/to/file
转换为urlpathstatic_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
文档 。