我知道这个问题已经在这里多次提出过了。我搜索并阅读了一些答案,但没有帮助。我猜,我遗漏了一些非常基本的东西。
在我的settings.py中,我有:
STATIC_URL = '/static/'
STATIC_ROOT = join(APPS_DIR, "static/")
# STATICFILES_DIRS = [join(APPS_DIR, 'static')]
MEDIA_ROOT = join(APPS_DIR, 'media')
MEDIA_URL = "/media/"
在我的config / urls.py中,我有:
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我有一个位于/static/core/js/jquery_countdown/jquery.countdown.min.js
的文件,我正在尝试加载模板,如下所示:
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="{% static 'core/js/jquery_countdown/jquery.countdown.min.js' %}"> </script>
同一模板的顶部看起来像
{% extends "contest/base.html" %}
{% load static %}
这会导致以下服务器错误:
[23/Mar/2018 10:12:08] "GET /static/core/js/jquery_countdown/jquery.countdown.min.js HTTP/1.1" 404 1858
我错过了什么?
答案 0 :(得分:2)
您只在应用程序目录中搜索静态文件,但将文件保存在全局静态文件中。您应该使用注释的STATICFILES_DIRS设置来指定搜索静态文件的所有位置。
答案 1 :(得分:2)
在您的app目录中创建文件夹 static_files 。并将所有静态文件放在其中。然后使用以下设置
STATIC_URL = '/static/'
STATIC_ROOT = join(APPS_DIR, "static/")
STATICFILES_DIRS = [join(APPS_DIR, 'static_files')]
如果它无法解决您的问题,请运行命令python manage.py collectstatic
。它会将所有静态文件(不仅来自您的应用程序,还来自django admin,第三方应用程序等)复制到 STATIC_ROOT 文件夹。
<强>详情
对于本地服务,django服务器将查看STATICFILES_DIRS
。所以你不需要运行python manage.py collectstatic
命令。所有外部应用程序都可能具有静态文件的STATICFILES_DIRS。对于生产服务器,您需要将分散在所有应用程序周围的所有静态文件收集到一个位置。这是python manage.py collectstatic
命令将执行的操作。它会将所有静态文件复制到STATIC_ROOT
目录