收集静态文件会引发不正确的配置

时间:2014-11-30 13:29:31

标签: django

我正在使用Django 1.7。将我的站点部署到生产服务器并运行collectstatic时,出现以下错误消息: 的 django.core.exceptions.ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting

我使用分割设置;我的作品local.py包含:

STATIC_ROOT = '/home/username/projects/site/static/'

我的base.py包含:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

6 个答案:

答案 0 :(得分:26)

根据docs,collectstatic会将各种文件夹中的文件复制到STATIC_ROOT。

因此,您无法使用STATIC_ROOT中的STATICFILES_DIRS文件夹。

解决方案:将STATIC_ROOT更改为例如STATIC_ROOT = '/home/username/projects/site/assets/'

答案 1 :(得分:7)

我知道这是一篇过时的文章,但是此解决方案对我有用,可能会对其他人有所帮助。

在settings.py中:

    if DEBUG:
        STATICFILES_DIRS = [
            os.path.join(BASE_DIR, 'static')
       ]
    else:
        STATIC_ROOT = os.path.join(BASE_DIR, 'static')

答案 2 :(得分:5)

当我尝试使用压缩器

时,我遇到了与此(staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting.相同的错误

主要问题是我的settings.py文件

STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]

删除或评论:

STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]

答案 3 :(得分:0)

解决方案是,如果您正在运行Django开发服务器,则不得设置STATIC_ROOT:

import sys
if sys.argv[1] != 'runserver':
    STATIC_ROOT = os.path.join(BASE_DIR, "static")

在Windows 10开发环境中以及在生产环境中AWS的Ubuntu 18.04 docker容器中使用Django 2.1进行了测试。

答案 4 :(得分:0)

在 settings.py 中将静态根设置为虚拟环境,以便将静态文件收集到文件夹 static_in_env

var six = file_content.readIntLE(0, 6);

答案 5 :(得分:-1)

Django 1.11 documentation

中看到了这一点
urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

如上所示,对urls.py进行更改后,它应该可以正常工作。