关于flask框架搭建服务器时,静态文件(js、css、images等)无法有效更新的解决方法

本教程用的环境是:

  1. python3.6;
  2. jquery-1.11.1.min.js;
  3. flask-1.1.2

摘要

flask搭建的调试服务器中,当修改’/static’文件夹下的.js、.css、.image文件时,前端界面的内容无法随之更新。我第一次遇到这种情况时用了很笨的方法解决这个问题,就是修改这些文件的文件名,重新导入到.html文件中,以此来获得这些静态文件修改后的显示效果,但是这是一个笨办法,上不得台面!

主要内容

我在查阅大量资料后,掌握了新的方法,分为三步,如下所示:

  1. 在后端app.py从flask库中导入url_for模块:
 from flask import Flask, url_for`
  1. 在app.py中添加路由:
# url_for,修改静态文件(js,css,image)时,网页同步修改
@app.context_processor
def override_url_for():
    return dict(url_for=dated_url_for)

def dated_url_for(endpoint, **values):
    filename = None
    if endpoint == 'static':
        filename = values.get('filename', None)
    if filename:
        file_path = path.join(app.root_path, endpoint, filename)
        values['v'] = int(stat(file_path).st_mtime)
    return url_for(endpoint, **values)
  1. 在前端index.html文件中导入静态文件:
#注意!第一行是普通导入方法,用这种方法导入js文件无法实现及时生效
<script src="../static/js/test.js"></script>
#第二行引入了url_for方法注意体会两者的不同之处
<script src="{{url_for('static', filename='js/test.js')}}"></script>

补充

我的项目文件结构如下图:

关于flask框架搭建服务器时,静态文件(js、css、images等)无法有效更新的解决方法_第1张图片

总结

以上就是本教程的所有内容了,希望对你在学习python的道路上有所帮助

你可能感兴趣的:(python学习之路,python,web,css,js)