Python Flask-使用相同的名称覆盖图像并显示新图像

Python Flask-使用相同的名称覆盖图像并显示新图像,python,html,flask,jinja2,overwrite,Python,Html,Flask,Jinja2,Overwrite,我创建了一个小烧瓶网站,有两个功能:上传图片并在网站上显示 网站总是以相同的名称保存新上传的图像,image.png,以替换以前上传的图像。当我上传一个新文件时,它成功地替换了static/img目录中的旧文件。然而,该网站一直显示旧图像 我能在stackoverflow上找到的最接近的问题是 . 这里的答案建议使用信号,但没有解释为什么会发生这种情况。如果可能的话,我希望有人能澄清我做错了什么 如何确保显示新上传的图像 您可以使用以下信息重现我的情况 目录结构 ├── main.py ├──

我创建了一个小烧瓶网站,有两个功能:上传图片并在网站上显示

网站总是以相同的名称保存新上传的图像,
image.png
,以替换以前上传的图像。当我上传一个新文件时,它成功地替换了
static/img
目录中的旧文件。然而,该网站一直显示旧图像

我能在stackoverflow上找到的最接近的问题是 . 这里的答案建议使用信号,但没有解释为什么会发生这种情况。如果可能的话,我希望有人能澄清我做错了什么

如何确保显示新上传的图像

您可以使用以下信息重现我的情况

目录结构

├── main.py
├── static
│   └── img
│       └── image.png
└── templates
    └── index.html
main.py
导入操作系统
从烧瓶导入烧瓶、请求、重定向、url\u for、呈现\u模板
app=烧瓶(名称)
app.config['UPLOAD_FOLDER']='static/img/'
@app.route('/',方法=['GET','POST'])
def home():
如果request.method==“POST”:
file=request.files['image']
filename=“image.png”
保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
返回渲染模板('index.html',filename=filename)
其他:
返回渲染模板('index.html')
@应用程序路径(“/”)
def显示\u img(文件名):
“”“在网站上显示图像”“”
返回重定向(url_表示('static',filename='img/'+filename))
如果名称=“\uuuuu main\uuuuuuuu”:
app.run(debug=True)
index.html

{%if文件名%}
{%endif%}
提交

正如@Abdou在上面的评论中提到的,该网站正在使用缓存的图像来继续显示旧图像。在大多数情况下可能不是最理想的,但是对于这种情况,通过将
app.config['SEND\u FILE\u MAX\u AGE\u DEFAULT']=0
放在顶部禁用缓存解决了问题

app=Flask(\uuuuu name\uuuuuu)
app.config['SEND\u FILE\u MAX\u AGE\u DEFAULT']=0
...
如果名称=“\uuuuu main\uuuuuuuu”:
app.run(debug=True)

正如@Abdou在上面的评论中提到的,该网站正在使用缓存的图像来继续显示旧图像。在大多数情况下可能不是最理想的,但是对于这种情况,通过将
app.config['SEND\u FILE\u MAX\u AGE\u DEFAULT']=0
放在顶部禁用缓存解决了问题

app=Flask(\uuuuu name\uuuuuu)
app.config['SEND\u FILE\u MAX\u AGE\u DEFAULT']=0
...
如果名称=“\uuuuu main\uuuuuuuu”:
app.run(debug=True)

我遇到了一个类似但略有不同的问题-当我重写HTML模板时,旧模板仍在显示。 在app.config中将设置为True解决了此问题

app.config['TEMPLATES_AUTO_RELOAD'] = True

我有一个类似但略有不同的问题——当我重写HTML模板时,旧模板仍在显示。 在app.config中将设置为True解决了此问题

app.config['TEMPLATES_AUTO_RELOAD'] = True

这听起来像是缓存控制问题。寻找一些指导。您还可以尝试使用
307
重定向和
返回重定向(url\u for('static',filename='img/'+filename),code=307)
内部
显示\u img
@Abdou谢谢!我禁用了flask上的缓存,它工作了!这听起来像是缓存控制问题。寻找一些指导。您还可以尝试使用
307
重定向和
返回重定向(url\u for('static',filename='img/'+filename),code=307)
内部
显示\u img
@Abdou谢谢!我禁用了flask上的缓存,它工作了!