Python 3.x 收集静态白噪声can';在部署到heroku时看不到我的现有文件

Python 3.x 收集静态白噪声can';在部署到heroku时看不到我的现有文件,python-3.x,django,heroku,collectstatic,whitenoise,Python 3.x,Django,Heroku,Collectstatic,Whitenoise,我一直在我的应用程序上进行多次推送,以在heroku上部署,一切都很好,但当我为我的django应用程序添加设置,以使用cloudinary在生产环境中存储上传的文件时,whitenoise没有看到我项目中存在的文件,我没有对我的静态文件做任何更改,我以前推过heroku都没有问题,但现在一旦部署的collectstatic部分启动,whitenoise就会出现一个问题,即看不到我的文件,但它们的路径仍然正常,静态文件中没有任何更改 我不确定是否是cloudinary设置导致了这种情况 设置.p

我一直在我的应用程序上进行多次推送,以在heroku上部署,一切都很好,但当我为我的django应用程序添加设置,以使用cloudinary在生产环境中存储上传的文件时,whitenoise没有看到我项目中存在的文件,我没有对我的静态文件做任何更改,我以前推过heroku都没有问题,但现在一旦部署的collectstatic部分启动,whitenoise就会出现一个问题,即看不到我的文件,但它们的路径仍然正常,静态文件中没有任何更改

我不确定是否是cloudinary设置导致了这种情况

设置.py

...


INSTALLED_APPS = [
    # my apps
    'user.apps.UserConfig',
    'store.apps.StoreConfig',
    'pages.apps.PagesConfig',

    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages', 
    'whitenoise.runserver_nostatic',
    'cloudinary_storage',
    'django.contrib.staticfiles',
    'django.contrib.sites',

    # 3rd party apps
    'crispy_forms',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'cloudinary',
    #'djangorave',

    #providors
    'allauth.socialaccount.providers.facebook',
    'allauth.socialaccount.providers.google',

]

...

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

....


STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'


CLOUDINARY_STORAGE = {
    'CLOUD_NAME': 'YOUR_CLOUD_NAME',
    'API_KEY': 'YOUR_API_KEY',
    'API_SECRET': 'YOUR_API_SECRET',
}

DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage'
显示存在问题文件的项目文件结构

部署到heroku时出错


很明显,根据dj3 cloudinary存储文档,我遗漏了一个小细节,如果只想让cloudinary处理媒体文件,那么应用程序“cloudinary_存储”, 在已安装的应用程序中,“cloudinary”位于“django.contrib.staticfiles”下面,如下所示

INSTALLED_APPS = [
    # ...
    'django.contrib.staticfiles',
    'cloudinary_storage',
    'cloudinary',
    # ...
] 
如果使用文档中显示的第一个排列选项完成,并且“cloudinary_storage”位于“django.contrib.staticfiles”之前,那么它会覆盖collectstatic命令,从而导致我上面遇到的问题

参考: