0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Herokuの500エラーへの対応(Django)

Last updated at Posted at 2021-09-12

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

このようにすると下の画像のようにエラー内容が表示されます。

image.png

##エラー内容

###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

と打ち込み、データベースの内容を全てリセットし、
再度設定したところ、無事に登録できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?