当我的Django网站在runserver
的浏览器中提供时,第三方应用的静态文件没有更新。
这是我的文件结构(包含更多静态文件):
- mysite
- mysite
- settings.py
- wsgi.py
. . .
- myapp
- templates
- base.html
- myapp.html
- models.py
- forms.py
. . .
- static
- MyApp
- mystyle.css
- autocomplete-light
- select2.css
base.html文件:
{% load static %}
<!DOCTYPE html>
<html>
<head>
<title>
{% block title %}Portal{% endblock title %}
</title>
{% block stylesheets %}
<link rel="stylesheet" type="text/css" href="{% static 'myapp/mystyle.css' %}?{% now "U" %}"/>
{% endblock stylesheets %}
</head>
<body>
{% block content %}
{% endblock content %}
</body>
<footer>
{% block footer %}
{% endblock footer %}
</footer>
</html>
myapp.html:
{% extends "myapp/base.html" %}
{% load static %}
{% load crispy_forms_tags %}
{% block title %}My App{% endblock title %}
{% block stylesheets %}
{{ block.super }}
{% endblock stylesheets %}
{% block content %}
{% crispy formset helper %}
{% endblock content %}
{% block footer %}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}?{% now "U" %}"></script>
{{ formset.media }}
{% endblock %}
settings.py(相关部分):
STATIC_ROOT = 'C:/Users/username/mysite/static/'
STATIC_URL = '/static/'
我使用python manage.py collectstatic
将我的应用和第三方应用(django-autocomplete-light
)的静态文件收集到STATIC_ROOT
中。它们存在于STATIC_ROOT中。然后,我使用runserver
提供了我的网站。静态文件随网站一起加载,其路径匹配回STATIC_ROOT
。当我编辑静态文件(例如自动填充应用的select2.css
)时,更改会显示在STATIC_ROOT
中。但是,它们不会显示在浏览器中。
我已尝试清除缓存,在各种浏览器中提供网站服务,终止/重新启动runserver,终止/重新启动文本编辑器,然后重新运行collectstatic
。这些尝试都没有奏效 - 静态文件在加载网站时根本不会更新。
如何在浏览器中更新静态文件?我想我可能要么错过settings.py
中的设置,要么可能是{{ formset.media }}
的问题。不过,我很茫然。
答案 0 :(得分:0)
记得添加STATICFILES_DIRS
,Django需要静态文件的网址:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
'/var/www/static/', # If you have more staticfiles this will be the order
)
并查看此What is the difference between {% load staticfiles %} and {% load static %}