1. ホーム
  2. python

[解決済み】Python Django。STATIC_ROOT 設定をせずに staticfiles アプリを使用している

2022-02-16 20:02:12

質問

DjangoアプリケーションをWebにデプロイしようとしているのですが、以下のエラーが発生します。

STATIC_ROOT を設定せずに staticfiles アプリを使用しています。 をファイルシステムのパスに設定します。

しかし、私は自分の production.py :

from django.conf import settings

DEBUG = False
TEMPLATE_DEBUG = True
DATABASES = settings.DATABASES

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')

# Update database configuration with $DATABASE_URL.
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATIC_URL = '/static/'

# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)

# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

解決方法は?

とは何ですか? production.py ファイルをご覧ください。設定をどのようにインポートするのですか?

このエラーが発生した方法 (wsgi サーバを経由して django を提供するか、コマンドラインで提供するか) によりますが、以下の項目をチェックしてください。 manage.py または wsgi.py をクリックして、デフォルト設定ファイルの名前を確認します。

手動で使用する設定をしたい場合は、以下のようなものを使用します。

./manage.py --settings=production

ここで production は任意のPythonモジュールです。

さらに、設定ファイルは django に関連するものを一切インポートしてはいけません。環境ごとに設定を分けたい場合は、以下のようなものを使ってください。

ファイル settings/base.py

# All settings common to all environments
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')

のようなファイル settings/local.py , settings/production.py ...

# Production settings
from settings.base import *
DEBUG = False
DATABASES = …