Ari*_*was 46 python file-upload web-development-server flask
我正在使用flask设置本地服务器.我目前要做的就是使用index.html页面中的img标签显示图像.但我不断收到错误
GET http://localhost:5000/
ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg 404 (NOT FOUND)
Run Code Online (Sandbox Code Playgroud)
烧瓶在哪里寻找文件?一点帮助都会很棒.我的HTML代码是
<html>
<head>
</head>
<body>
<h1>Hi Lionel Messi</h1>
<img src= "ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg ">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的python代码是:
@app.route('/index', methods=['GET', 'POST'])
def lionel():
return app.send_static_file('index.html')
Run Code Online (Sandbox Code Playgroud)
Mat*_*aly 57
您的static目录中的图像文件是ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg 吗?如果将其移动到静态目录并更新HTML,请执行以下操作:
<img src="/static/ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg">
Run Code Online (Sandbox Code Playgroud)
它应该工作.
此外,值得注意的是,有一种更好的方法来构建它.
文件结构:
app.py
static
|----ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg
templates
|----index.html
Run Code Online (Sandbox Code Playgroud)
app.py
from flask import Flask, render_template, url_for
app = Flask(__name__)
@app.route('/index', methods=['GET', 'POST'])
def lionel():
return render_template('index.html')
if __name__ == '__main__':
app.run()
Run Code Online (Sandbox Code Playgroud)
模板/ index.html的
<html>
<head>
</head>
<body>
<h1>Hi Lionel Messi</h1>
<img src="{{url_for('static', filename='ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg')}}" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这样做可以确保您不会对静态资产的URL路径进行硬编码.
小智 18
使用图像实际存在的绝对路径(例如)'/ home /artitra/pictures/filename.jpg'
或者像这样在项目目录中创建静态文件夹
| templates
- static/
- images/
- yourimagename.jpg
Run Code Online (Sandbox Code Playgroud)
然后这样做
app = Flask(__name__, static_url_path='/static')
Run Code Online (Sandbox Code Playgroud)
然后你可以在index.html中像这样访问你的图像
src ="/static/images/yourimage.jpg"
Run Code Online (Sandbox Code Playgroud)
在img标签
小智 9
我也花了一段时间才弄清楚这一点。url_for在 Flask 中查找您在routes.py脚本中指定的端点。
因此,如果您的routes.py文件中有装饰器,@blah.route('/folder.subfolder')那么 Flask 将识别该命令{{ url_for('folder.subfolder') , filename = "some_image.jpg" }}。该'folder.subfolder'参数将其发送到它识别的 Flask 端点。
但是,假设您将图像文件 , 存储some_image.jpg在您的子文件夹中,但没有将此子文件夹指定为您的烧瓶中的路由端点routes.py,您的路由装饰器看起来像@blah.routes('/folder'). 然后,您必须以这种方式请求您的图像文件:
{{ url_for('folder'), filename = 'subfolder/some_image.jpg' }}
IE 你告诉 Flask 去它知道的端点,“文件夹”,然后通过将子目录路径放在文件名参数中来引导它。
从文档:
动态Web应用程序还需要静态文件.这通常是CSS和JavaScript文件的来源.理想情况下,您的Web服务器已配置为为您提供服务,但在开发期间,Flask也可以这样做.只需创建一个
static在包中或模块旁边调用的文件夹,它就可以在/static应用程序中找到.要为静态文件生成URL,请使用特殊
'static'端点名称:Run Code Online (Sandbox Code Playgroud)url_for('static', filename='style.css')该文件必须存储在文件系统中
static/style.css.
| 归档时间: |
|
| 查看次数: |
95675 次 |
| 最近记录: |