django中找不到静态文件错误

时间:2018-03-23 04:44:51

标签: python django django-staticfiles

我知道这个问题已经在这里多次提出过了。我搜索并阅读了一些答案,但没有帮助。我猜,我遗漏了一些非常基本的东西。

在我的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

我错过了什么?

2 个答案:

答案 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目录