我遇到了Flask缓存我的bundle.js文件的问题,尽管我在监视模式下运行webpack时设置了app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
,所以我决定在我的{{1}中添加一个构建版本为了打破浏览器缓存。
目前,我有:
bundle.js
在我的html文件中,我需要添加一个变量。问题是我不知道版本是什么,所以有没有办法获取烧瓶中的文件名,并用我的render_template发送它?我想象的是:<script src="{{url_for('static', filename='bundle.js')}}"></script>
然后通过在静态文件夹中查找以bundle开头的文件来获取app.py中的版本,该文件以整数开头,以.js结尾
答案 0 :(得分:1)
在你的app.py文件中:
app.jinja_env.globals['js_bundle_file'] = 'bundle-1.1.js'
在你的模板中:
<script src="{{url_for('static', filename=js_bundle_file)}}"></script>
您可以使用稍微粗略的列表理解来查找它,而不是对您的捆绑文件进行硬编码:
app.jinja_env.globals['js_bundle_file'] = [f for f in os.listdir('static') if f.endswith('.js') and f.startswith('bundle')][0]
或者看起来更干净的全球:
import glob
app.jinja_env.globals['js_bundle_file'] = glob.glob('static/bundle*.js')[0]