链接到带 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?

189561 次浏览

默认情况下,静态文件使用 static端点Flask应用程序也有以下参数:

static_url_path: 可以用来指定一个不同的路径的静态文件在网络上。默认值为 static_folder文件夹的名称。

static_folder: 文件夹与静态文件,应在 static_url_path服务。默认为应用程序根路径中的“ static”文件夹。

It means that the filename argument will take a relative path to your file in static_folder and convert it to a relative path combined with 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文档

在我的例子中,我对 nginx 配置文件进行了特殊的指导:

location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}

所有客户都收到了“404”,因为 nginx 对 Flask 一无所知。

Linux 上的主配置文件是 /etc/nginx/nginx.conf