0

Heroku にデプロイするために複数のプッシュを作成するアプリに取り組んできましたが、すべて問題ありませんでしたが、django アプリの設定を追加して cloudinary を使用してアップロードされたファイルを本番環境に保存すると、whitenoise が私のプロジェクトに存在するファイルを表示できなくなりました。静的ファイルに変更を加えておらず、heroku への以前のプッシュはすべて問題ありませんでしたが、デプロイの collectstatic 部分が開始されると、ホワイトノイズはファイルを表示しないという問題を提示しますが、それらのパスはまだ問題なく、何も変更されていません静的ファイル

これを引き起こしている曇りの設定かどうかはわかりません

設定.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へのデプロイ時のエラー

ここに画像の説明を入力

4

1 に答える 1

1

どうやら dj3-cloudinary-storage docs によると、小さな詳細を見逃していたようです。これにより、cloudinary でメディア ファイルを処理することだけが必要な場合、アプリ「cloudinary_storage」、「cloudinary」は、以下に示すように、INSTALLED_APPS の「django.contrib.staticfiles」の下に配置されます。

INSTALLED_APPS = [
    # ...
    'django.contrib.staticfiles',
    'cloudinary_storage',
    'cloudinary',
    # ...
] 

「django.contrib.staticfiles」の前に「cloudinary_storage」を指定してドキュメントに示されている最初の配置オプションを使用すると、collectstatic コマンドが上書きされ、上記の問題が発生します。

参考:https ://pypi.org/project/dj3-cloudinary-storage/

于 2020-10-02T13:04:21.873 に答える