Heroku でCSSが反映されない。django つまづき集
つまづきをメモ
ローカル/仮想環境だとCSSは問題なく反映されるのに、
Herokuにデプロイするとうまくいかない。
どうやら、whitenoiseなるパッケージがいるらしい。
というわけで、以下リンクにかかれている通り、
settings.pyを書き換え、pip install whitenoise して、
requirements.txtを発行し直す。
それでも、まだうまくいかない。
ModuleNotFoundError: No module named 'whitenoise'
wsgi.py も書き換えるそうだ。
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
ググって出てくるのはここまで。でも、これでもまだ動かない。
たぶん、pipfile, pipfile.lockがいけないんじゃないかと思う。
そう思い、pipfile内に、requirements.txtにある、
whitenoiseの行をコピペし、他のやつらと書き方を揃える。
そうして、再デプロイすると、
ImportError:
Your WhiteNoise configuration is incompatible with WhiteNoise v4.0
This can be fixed by following the upgrade instructions at:
http://whitenoise.evans.io/en/stable/changelog.html#v4-0
と返ってくる。時間がないから、今はここまで。
```12/19追記
先週末、理由がわかった。
どうやらwhitenoiseのバージョン4系になったところから、
書き方が変わったらしい。
やるべきことは、先程のwsgi.pyファイル名の修正とsetting.pyの修正。
まず、wsgi.pyの修正
from django.core.wsgi import get_wsgi_application
# この行を削除 from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
# この行も削除 application = DjangoWhiteNoise(application)
要は、wsgiファイルには、whitenoiseについて書かんでよい。
ということらしい。
そして次に、setting.pyの修正。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', #ここに書き足す。
# ...
]
上記の通り、 'django.middleware.security.SecurityMiddleware',の
次の行に書き足すべきだそうだ。http://whitenoise.evans.io/en/stable/django.html#django-middleware
これで直った。
バージョン確認はちゃんとしなきゃならないということか。
この記事が気に入ったらサポートをしてみませんか?