如何在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?
答案 0 :(得分:140)
默认情况下,您拥有静态文件的static
endpoint。 Flask
应用程序也有以下参数:
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">
答案 1 :(得分:0)
在我的情况下,我对nginx配置文件进行了特殊说明:
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
所有客户都收到了“404&#39;因为nginx对Flask一无所知。
我希望它对某人有所帮助。