Python 如何在flask中发送静态文件来查找静态文件?

Python 如何在flask中发送静态文件来查找静态文件?,python,flask,flask-restful,Python,Flask,Flask Restful,我当前的工作目录是/home/mark/a/b,我的图像位于/home/mark/a/b/c/static,即图像的绝对路径是/home/mark/a/b/c/static/image.gif 我使用python函数send_static_file通过GET请求从端点返回图像 我的问题是,为什么我不需要指定图像所在位置的完整路径,实际上我只需要指定图像文件名,它就能够检索图像并将其发送到浏览器?send\u static\u file是否自动搜索静态文件夹 app = Flask(__name_

我当前的工作目录是
/home/mark/a/b
,我的图像位于
/home/mark/a/b/c/static
,即图像的绝对路径是
/home/mark/a/b/c/static/image.gif

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

我的问题是,为什么我不需要指定图像所在位置的完整路径,实际上我只需要指定图像文件名,它就能够检索图像并将其发送到浏览器?
send\u static\u 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 ?"
}
我看到一篇帖子(第一个答案)多少回答了我的问题。但我不太清楚他们说的是什么意思

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\u url\u路径
static\u文件夹
参数:

  • static\u url\u path
    -可用于为web上的静态文件指定不同的路径(中的描述)。例如,您指定了一些url前缀 对于您的服务器(例如localhost:8000/some_prefix/…),以便所有服务器路由都可以使用此前缀。在这种情况下,
    static\u url\u path
    也应该用这个前缀指定:some\u prefix/static
  • static\u文件夹
    -包含静态文件的文件夹,应在
    static\u url\u路径
    处提供。默认为应用程序根路径中的“静态”文件夹(中的说明)。换句话说,它是指向服务器文件系统上包含静态文件的文件夹的路径
我的问题是,为什么我不需要指定图像所在位置的完整路径,实际上我只需要指定图像文件名,它就能够检索图像并将其发送到浏览器

因为
Flask
将在
static\u文件夹
中搜索指定的文件,该文件夹是指向服务器文件系统上包含静态文件的文件夹的路径

@app.route()和函数在哪里?您在浏览器中使用了什么url来获取它?您对curl使用了什么命令?