使用 url_for 链接到 Flask 静态文件
Posted
技术标签:
【中文标题】使用 url_for 链接到 Flask 静态文件【英文标题】:Link to Flask static files with url_for 【发布时间】:2013-04-27 10:32:00 【问题描述】:如何在 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?
【问题讨论】:
【参考方案1】:就我而言,我对 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
。在 Windows 上可能类似。
【讨论】:
【参考方案2】:默认情况下,static
endpoint 用于静态文件。 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
documentation。
【讨论】:
以上是关于使用 url_for 链接到 Flask 静态文件的主要内容,如果未能解决你的问题,请参考以下文章