django STATICFILES_DIRS设置不应包含STATIC_ROOT设置

时间:2018-02-21 18:29:09

标签: django django-staticfiles django-settings

我正在heroku上部署Django应用程序。

在我的设置模块中,我已配置为托管静态文件,如

STATIC_ROOT = os.path.join(BASE_DIR, 'static_my_project')
STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static_my_project')
]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn', 'media_root')

urls.py

urlpatterns = urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns = urlpatterns + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

但是在部署到heroku时,它会出错

SystemCheckError: System check identified some issues:

ERRORS:
?: (staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting.

2 个答案:

答案 0 :(得分:0)

可能对此有所帮助。

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

答案 1 :(得分:0)

问题在于 STATIC_ROOT 和 STATICFILES_DIRS 中的名称不能相同。 static root 用于 django 的 collectstatic 命令。 如果不使用它,您可以将其删除。 如果不将其默认位置(在 django 应用程序内)更改为其他位置(例如 base 或其他位置),也可以删除静态文件目录。