【问题标题】:static files not found error in djangodjango中找不到静态文件错误
【发布时间】:2018-03-23 04:44:51
【问题描述】:

我知道这个问题已经在这里被问过好几次了。我已经搜索并阅读了许多答案,但没有任何帮助。我想,我错过了一些非常基本的东西。

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

我错过了什么?

【问题讨论】:

    标签: python django django-staticfiles


    【解决方案1】:

    在您的应用目录中创建文件夹 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目录

    【讨论】:

    • 为了澄清一下,我用来加载的文件位于 static_files 目录中,但是服务器显示它位于静态目录中。为什么会这样?
    • 对于本地服务,django 服务器将查看 STATICFILES_DIRS。所以你不需要运行python manage.py collectstatic 命令。所有外部应用程序都可能有 STATICFILES_DIRS 那里放置静态文件
    • 感谢您的时间和精力。您不仅解决了我的问题,还消除了一些疑问。 :)
    • 永远欢迎。根据您的评论更新答案。请参考
    【解决方案2】:

    您仅在应用目录中搜索静态文件,但您的文件位于全局静态文件中。您应该使用带注释的 STATICFILES_DIRS 设置来指定搜索静态文件的所有位置。

    【讨论】:

    • 感谢您的帮助。取消注释同一行会给我一个错误STATICFILES_DIRS setting should not contain the STATIC_ROOT setting
    • 查看docs.djangoproject.com/en/2.0/ref/settings/#staticfiles-dirs 的文档。此外,STATIC_ROOT 通常用于在生产中部署静态文件的位置(当您运行 python manage.py collectstatic 时)。
    • 谢谢,注释掉 STATIC_ROOT 设置有帮助。
    • Em... 您可以通过点赞将其标记为有用。 ;-)
    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2014-11-10
    • 2011-08-26
    • 2020-06-22
    • 2021-08-16
    相关资源
    最近更新 更多