具有动态文件名

时间:2018-06-03 19:07:45

标签: flask

我遇到了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结尾

1 个答案:

答案 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]