質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1019閲覧

Django herokuへデプロイしたいがcollectstaticができない

ftvocalove47

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/04 19:55

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問