115

如何url_for在 Flask 中使用来引用文件夹中的文件?例如,我在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?

4

2 回答 2

217

默认情况下,您拥有静态文件的static端点。应用程序还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

因此,如果您想从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文档

于 2013-05-03T06:36:46.137 回答
1

就我而言,我对 nginx 配置文件有特殊说明:

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

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

主要配置文件/etc/nginx/nginx.conf位于 Linux 上。在 Windows 上可能类似。

于 2018-06-03T14:55:19.227 回答