为什么Javascript无法在我的Flask应用中使用?

时间:2019-09-05 08:22:12

标签: javascript python html flask

我的应用程序中有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(微型)框架中遇到过此类问题?

1 个答案:

答案 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 R 。这应该会清理缓存并强制重新加载js文件。

enter image description here

最后,如果这些都不起作用,则应检查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)以查看文件是否正在加载。