我在一个django模板上引用了一个JavaScript文件:
<script src="{% static 'js/login.js' %} "></script>
我对那个js文件做了一些修改。然后,我刷新了页面,但看不到更改的发生。
如果我从文件中删除JavaScript并将其放入HTML中,它可以正常工作,但如果我尝试使用外部js文件,它就不能正常工作。我已经多次尝试关闭服务器并运行runserver,我也尝试从火狐切换到Chrome。这完全没有意义。请帮助我理解,我可以在HTML中包含所有的js,但它困扰着我,我不能再以正常的方式来做了。
关于这个错误的更多详细信息(我发现的#$&%#最奇怪的事情):
JavaScript是这样的:
old_sentence = "Dig that hole, forget the sun" // this is what I want to change
$("#jqselector").text(old_sentence)
new_sentence = "Run, rabbit, run" // this is the new sentence, it just won't show up.
因此,我更改了js并重新启动了服务器,但html仍然显示了旧的句子。然后我删除了对login.js
文件的引用,并将所有的js放在脚本标记中,当然,新的句子出现了。然后我添加了login.js
文件,注释掉了html中的js,但我删除了login.js
文件中的所有内容,使其成为一个空文件……但这句老话仍然会出现。
因此,旧的login.js
文件必须存放在某个我不知道的地方。然后我打开Chrome,再试一次,同样的问题。
那会是什么呢?是否有强制django刷新静态文件的选项?我以为重启服务器就足够了。我应该重新启动我的计算机吗?
发布于 2015-01-13 06:40:58
听起来你的两个浏览器都缓存了javascript文件。在Chrome中,你可以通过按Ctrl
+ Shift
+ Del
并勾选“缓存的图像和文件”来清除缓存。Firefox可能也有类似的快捷方式。
您可以查看this question上的提示,以完全禁用开发服务器上的静态文件缓存。
发布于 2017-07-27 07:28:07
你需要破坏浏览器的缓存。当为DEBUG=True
时,此模板标记将输出基于时间的uuid。否则,它将查找PROJECT_VERSION
环境变量。如果没有找到,它将输出一个静态版本号。
import os
import uuid
from django import template
from django.conf import settings
register = template.Library()
@register.simple_tag(name='cache_bust')
def cache_bust():
if settings.DEBUG:
version = uuid.uuid1()
else:
version = os.environ.get('PROJECT_VERSION')
if version is None:
version = '1'
return '__v__={version}'.format(version=version)
您将在如下所示的模板中使用:
{% load cache_bust %}
<link rel="stylesheet" href="{% static "css/project.css" %}?{% cache_bust %}"/>
下面是结果输出:
<link rel="stylesheet" href="/static/css/project.css?__v__=7d88de4e-7258-11e7-95a7-0242ac130005"/>
发布于 2018-05-22 20:42:40
代替使用复杂的解决方案,您可以在模板中的包含中添加额外的参数。
对于静态包括:
<script src="{% static 'js/polls/polls.js' %}?version=1"></script>
对于direct包括:
<link rel="stylesheet" type="text/css" href="/site_media/css/style.css?version=1" />
注意代码中的?version=1
。每次修改css/js文件时,请在模板中更改此版本,以便强制浏览器重新加载该文件。
如果你因为一些未知的原因想要避免缓存,你可以使用当前的时间戳而不是版本:
<link rel="stylesheet" type="text/css" href="/site_media/css/style.css?{% now "U" %}" />
https://stackoverflow.com/questions/27911070
复制相似问题