我的应用程序中有Javascript问题。我正在使用Flask,并且在PyCharm工作。我的html位于模板文件夹中,而我的Javascript位于静态文件夹中,因此这是外部文件。它称为main.js。
这些是html中javascript的链接:
<script type="text/javascript" src="/static/main.js"></script>
<script type="text/javascript" src="{{ url_for('static', filename='main.py') }}"></script>
我尝试了两个版本,并且两个版本都遇到了相同的问题。这两个链接实际上都适用于我在localhost上的页面的第一次加载,但是我的Javascript main.js文件中的每个下一次更改只是无法被识别。例如,我将alert()放在main.js中只是为了确保链接有效,并且它们工作正常。但是后来我删除了alert(),放了一些其他的Javascript代码并保存了它,但是即使我从main.js文件中删除了它,该alert()仍将处于活动状态。我在main.js中放的这段新代码似乎根本就不存在。所以我的问题是为什么我的main.js文件不起作用?
我在这里错过了什么吗?有没有人在Flask或任何其他Python(微型)框架中遇到过此类问题?
答案 0 :(得分:1)
您的第二个引用是针对py
文件,而不是js
文件:
<script type="text/javascript" src="{{ url_for('static', filename='main.py') }}"></script>
在使用Flask时,以上方法可以替代完整路径,因此请将其更改为:
<script type="text/javascript" src="{{ url_for('static', filename='main.js') }}"></script>
如果您的浏览器仍然无法刷新javascript,则应尝试硬刷新页面。在Chrome上,这是通过在PC上按下 CTRL Shift R 或 CMD Shift 在Mac上为kbd> R 。这应该会清理缓存并强制重新加载js文件。
最后,如果这些都不起作用,则应检查python代码是否已修改标头以获取更长的缓存。您可以通过尝试包含以下内容来“强制” Flask请求使其具有较短的缓存时间:
@app.after_request
def add_header(response):
response.cache_control.max_age = 300
return response
您还可以尝试更改Flask应用程序的无缓存设置:
app = Flask(__name__)
...
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
我还将尝试使用其他浏览器,并检查network inspect tool (Chrome)以查看文件是否正在加载。