我有一个引用这样的静态对象的html文件
<img src="img/snacks.png">
<link href="css/bluestrap.css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)
因此浏览器尝试调用此通道并且烧瓶无法执行此操作
http://127.0.0.1:5000/img/snacks.png
Run Code Online (Sandbox Code Playgroud)
跨多个文件有很多这样的引用,因此无法更改引用.我如何从FLASK提供这些静态文件
我已将所有这些静态文件复制到'static'文件夹并尝试了这个
@app.route('/<path:filename>')
def send_file(filename):
return send_from_directory('/static', filename)
Run Code Online (Sandbox Code Playgroud)
但是这不起作用,有没有其他方法可以做到这一点?或者我做错了什么?
cod*_*eek 24
在生产中,您不希望使用flask服务器提供静态文件.我建议你使用合适的网络服务器来做到这一点.
对于dev,因为您不想使用url_for
,您可以尝试初始化您的烧瓶应用程序,如下所示.这样,flask知道静态文件的位置.
app = Flask(__name__, static_folder='static')
@app.route('/<path:filename>')
def send_file(filename):
return send_from_directory(app.static_folder, filename)
Run Code Online (Sandbox Code Playgroud)
在Flask中查看包含大量信息静态文件的帖子 - robot.txt,sitemap.xml(mod_wsgi)
如果您查看文档,send_from_directory
就会发现它采用了将文件保存在磁盘上的目录的路径。除非您将图像文件保存在名为的根目录下static
,否则您将要更新文件路径:
send_from_directory("/some/path/to/static", "my_image_file.jpg")
Run Code Online (Sandbox Code Playgroud)
话虽这么说,如果您将其用于承受任何负载的任何事情,最好确保Web服务器提供文件,而不是从应用程序提供静态文件。