【问题标题】:Static files aren't loading after changing STATIC_ROOT and STATICFILES_DIRS in django在 django 中更改 STATIC_ROOT 和 STATICFILES_DIRS 后未加载静态文件
【发布时间】:2016-11-20 11:15:32
【问题描述】:

我正在关注一个关于使用 CDN 为我的 satic 文件设置 STATIC_ROOT 的教程,但我决定我想在提供我的 django 应用程序的同一台服务器上提供我的静态文件。我尝试更改为下面的新设置并运行 manage.py collectstatic 现在静态文件未加载。我究竟做错了什么?这是 w/ django 1.9

新设置不起作用:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

旧设置有效:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    ]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media_cdn")

【问题讨论】:

    标签: python django


    【解决方案1】:

    您将静态文件保存在哪里?

    如果您像在第二个设置文件中一样将它们保存在BASE_DIR/static then it is important to include the sameSTATICFILES_DIRS` 中。

    如果您的静态文件分布在不同的应用程序中,那么您需要确保将django.contrib.staticfiles.finders.AppDirectoriesFinder 添加到您的STATICFILES_FINDERS

    collectstatic 的目的是从您所有的各种应用程序(管理员、投票等)中获取静态文件,并将它们移动到您的静态根目录以提供服务。您还需要确保您的STATIC_ROOTbeing served

    让您的 STATIC_ROOT 指向您的 BASE_DIR 中的某个位置也可能不是一个好主意 - 通常这不会由您的 Web 服务器静态提供。

    【讨论】:

    • 我的静态文件在 BASE_DIR/static 中。当我添加回 STATICFILES_DIRS 设置并设置 STATIC_ROOT= '' 时,我得到 django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without has set the STATIC_ROOT setting to a filesystem path.
    • 我假设你现在在测试服务器上运行这个?还是正在开发中?尝试设置 STATIC_ROOT=os.path.join(os.path.dirname(BASE_DIR), "static_root") 并保持 STATICFILES_DIRS 设置。如果您正在运行manage.py runserver,则不需要运行collectstatic
    • 目前正在通过 manage.py runserver 进行测试。添加上述 STATIC_ROOT 设置将在我的 BASE_DIR 之外添加一个文件夹。因此,当我在生产环境中运行 collectstatic 时,它应该将所有静态文件从 BASE_DIR/static 复制到 ../static_root 并在 apache 或 nginx 中指定 static_root 文件夹?
    • 是的,如果你愿意,你可以把它保存在你的 BASE_DIR 中。但只要你从不运行collectstatic,它就不会被创建。我认为将 STATIC_ROOT 命名为与保存静态文件以进行开发的位置不同的名称很重要,因此 os.path.join(BASE_DIR, 'static_root') 也可以。
    猜你喜欢
    • 2022-11-20
    • 2021-11-07
    • 2019-08-31
    • 2014-11-12
    • 2021-04-03
    • 2012-01-21
    • 2016-11-06
    相关资源
    最近更新 更多