我想渲染一个包含图像的html页面,由一些matplotlib函数生成。所以我认为我必须:
所以在我的main.py中我做了:
plt.imshow(a)
for i in range(len(obj)):
x = obj[i][u'faceRectangle'][u'left']
y = obj[i][u'faceRectangle'][u'top']
w = obj[i][u'faceRectangle'][u'width']
h = obj[i][u'faceRectangle'][u'height']
plt.plot([x,x+w],[y,y], color='r')
plt.plot([x,x+w],[y+h,y+h], color='r')
plt.plot([x,x],[y,y+h], color='r')
plt.plot([x+w,x+w],[y,y+h], color='r')
plt.savefig('static/1.png')
plt.clf()
产生" 1.PNG"文件在我的/静态文件夹中,如下所示:
比我渲染具有以下行的html模板:
<img src="{{url_for('static', filename='1.png')}}" >
此代码完美运行,图像包含在生成的html页面中。 比起奇怪的事情,当我用另一个图像运行相同的代码时,它很好地用新的替换静态/ 1.png文件,但是它一直在html页面中显示第一个图像。即便如此,静态/文件夹中也没有这样的图像了。
如果是浏览器缓存文件,我怎么能避免其他用户发生同样的情况,我是否需要以某种方式制作随机文件名?
答案 0 :(得分:2)
考虑在URL的末尾添加缓存无效的随机数:
>>> '1.png?%d' % time.time()
'1.png?1505929617'
或使用例如app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60