🙅
Herokuの500エラーへの対応(Django)
Djangoで作成したアプリを2つHerokuにデプロイしたところ、
それぞれ500エラーが発生してしまったので、
その対応方法とエラーの内容について忘備録として残しておきます。
対応方法
結論から申し上げますと次のURLの通りの対応を行い、
Heroku上でもローカルと同じ方法でエラーの内容を確認できるようにしました。
具体的にはviews.pyとurls.pyに次の内容を加えます。
views.py
from django.views.decorators.csrf import requires_csrf_token
from django.http import HttpResponseServerError
@requires_csrf_token
def my_customized_server_error(request, template_name='500.html'):
import sys
from django.views import debug
error_html = debug.technical_500_response(request, *sys.exc_info()).content
return HttpResponseServerError(error_html)
urls.py
from [アプリ名] import views
handler500 = views.my_customized_server_error
このようにすると下の画像のようにエラー内容が表示されます。
エラー内容
1つ目のアプリ
上の画像のエラーが発生したアプリになります。
データベース関係のエラーでした。
herokuのデータベース設定を行った際に
heroku run python manage.py makemigrations
heroku run python manage.py migrate
としていましたが、これだけではアプリ内に記述したmodels.pyの内容が何故か反映されていなかったため、
heroku run python manage.py makemigrations [アプリ名]
heroku run python manage.py migrate
としたところ、データベースの設定を無事に完了することができました。
2つ目のアプリ
1枚目と同じくデータベース関係のエラーでした。
500エラーの中身を検証したところ、
登録フォームからデータベースへの登録を行うと、
models.pyに記述した覚えのない列についてnull制約が発生し
登録できないエラーが発生していました。
heroku pg:reset DATABASE_URL
と打ち込み、データベースの内容を全てリセットし、
再度設定したところ、無事に登録できました。
Discussion