使用url_for链接到Flask静态文件

时间:2013-05-03 04:54:52

标签: python flask jinja2

如何在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?

2 个答案:

答案 0 :(得分:140)

默认情况下,您拥有静态文件的static endpointFlask应用程序也有以下参数:

static_url_path:可用于为Web上的静态文件指定不同的路径。默认为static_folder文件夹的名称。

static_folder:包含应在static_url_path投放的静态文件的文件夹。默认为应用程序根路径中的“static”文件夹。

这意味着filename参数将采用static_folder中文件的相对路径,并将其转换为与static_url_default相结合的相对路径:

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

会将文件路径从static_folder/path/to/file转换为网址路径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

答案 1 :(得分:0)

在我的情况下,我对nginx配置文件进行了特殊说明:

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

所有客户都收到了“404&#39;因为nginx对Flask一无所知。

我希望它对某人有所帮助。