烧瓶中的send_static_file如何找到静态文件?



我当前的工作目录是/home/mark/a/b,我的镜像驻留在/home/mark/a/b/c/static,即镜像的绝对路径是/home/mark/a/b/c/static/image.gif

我正在使用 python 函数send_static_file通过GET请求从端点返回图像。

我的问题是,为什么我不需要指定图像所在位置的完整路径,实际上我需要做的就是指定图像文件名,它能够检索图像并将其发送到浏览器?send_static_file会自动搜索静态文件夹吗?

app = Flask(__name__, static_url_path='/static')
return app.send_static_file('image.gif')

如果我在卷曲端点时指定的不仅仅是图像文件名本身,则会导致下面显示错误。

{
"message": "The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again. You have requested this URI [/event/email/] but did you mean /event/email/ or /event ?"
}

我看到一个帖子(第一个答案(在某种程度上回答了我的问题Flask:如何提供静态html?。但我不太确定他们说是什么意思,

static_url_path changes the URL static files are available at, not the location on the filesystem used to load the data from.

文件系统上的位置和 URL 静态文件之间有什么区别?

文件系统上的位置和 URL 静态文件之间有什么区别?

URL 路由不应与服务器文件系统上的路径一致。出于以下目的,您可以在Flask应用初始化时指定static_url_pathstatic_folder参数:

  • static_url_path- 可用于为 Web 上的静态文件指定不同的路径(来自 Flask 文档的说明(。 例如,您指定了一些网址前缀 对于您的服务器(例如 localhost:8000/some_prefix/...(,以便您的所有服务器路由都将在此前缀可用。在这种情况下,还应使用此前缀指定static_url_path:some_prefix/静态
  • static_folder- 包含应在static_url_path提供的静态文件的文件夹。默认为应用程序根路径中的"静态"文件夹(Flask 文档中的说明(。换句话说,它是服务器文件系统上包含静态文件的文件夹的路径。

我的问题是,为什么我不需要指定图像所在位置的完整路径,实际上我需要做的就是指定图像文件名,它能够检索图像并将其发送到浏览器?

因为Flask将在static_folder中搜索指定的文件,这是服务器文件系统上包含静态文件的文件夹的路径。

相关内容

  • 没有找到相关文章

最新更新