前提・実現したいこと
Djangoでwebアプリを開発しHerokuへデプロイしたのですが、サイトを開こうとするとsever error http 500が出ました。
本番環境でDEBUG=Trueにすると表示されたのですが、今度はCSSファイルが反映されていませんでした。
いろいろ調べてcollectstaticを使うと分かったのですが、
heroku run python manage.py collectstatic
を実行するとエラーが出ます。
恐らくbase.pyの中のパスの指定がうまくできていないのかと思うのですが、どうすればいいか分かりません。
分かる方教えてください。お願いします。
発生している問題・エラーメッセージ
FileNotFoundError: [Errno 2] No such file or directory: '/app/assets'
###階層(関係ありそうな部分のみ抜粋)
SHIFTPROJECT
├─assets
├─shiftapp
├─shiftproject
│ ├─settings
│ │ ├─__init__.py
│ │ ├─base.py
│ │ ├─local.py
│ │ └─production.py
│ ├─__init__.py
│ ├─asgi.py
│ ├─urls.py
│ └─wsgi.py
├─static
│ ├─login.css
│ ├─registshift.css
│ └─top.css
├─templates
└─manage.py
base.py(一部抜粋)
python
1import os 2 3SECRET_KEY = os.environ.get('SECRET_KEY') 4 5# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 6BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 7 8(中略) 9 10# Static files (CSS, JavaScript, Images) 11# https://docs.djangoproject.com/en/3.0/howto/static-files/ 12 13STATIC_URL = '/static/' 14 15STATICFILES_DIRS = [os.path.join(BASE_DIR, 'assets')] 16 17STATIC_ROOT = os.path.join(BASE_DIR, 'static')
###production.py
python
1from .base import * 2 3SECTRET_KEY = os.environ.get('SECRET_KEY') 4 5DEBUG = False 6 7from dj_database_url import config 8db_from_env = config(conn_max_age=600) 9DATABASES['default'].update(db_from_env) 10 11ALLOWED_HOSTS = ['.herokuapp.com'] 12 13STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
試したこと
設定ファイルの分割はこちらのサイトに従って行ったので、もしかしたらそれが関係しているのかもしれません。
https://medium.com/@kjmczk/django-multiple-settings-2a4c15c7c7b0
このサイトではSECRET_KEYはproduction.pyのみに設定しbase.pyからは消すと書いてありましたが、それだとherokuでエラーが出たのでbase.pyにもSECRET_KEYを記述しています。
STATIC_ROOT等設定していなかったため調べながらプロジェクト直下にassetsディレクトリを作成したのですが、エラーが直りませんでした。
補足情報(FW/ツールのバージョンなど)
asgiref==3.2.7
Django==3.0.6
pytz==2020.1
sqlparse==0.3.1
dj-database-url==0.5.0
django-heroku==0.3.1
gunicorn==20.0.4
whitenoise==5.0.1
psycopg2==2.8.5
dj-static==0.0.6
あなたの回答
tips
プレビュー