Skip to main content

How to hack Django Server Error 500

Error文をSlackで送れたら簡単にServer Error 500を簡単に直せました。 Errorが出るたびに悲しくなるので、ついでにエラー画面に猫のGIFを表示させました。

REF

Step1

  1. SlackでLogin後、Incomingにアクセス → チャンネルを選び、Webhook URLを控え、ポチポチ
  2. 適当なviews.pyに以下のように書きます
your_app/views.py
from django.http import HttpResponseServerError
from django.views.decorators.csrf import requires_csrf_token
webhook_url = '控えたSlack Webhook URL をコピペ'
cat_iframes = [
'(https://giphy.com/)で検索して、埋め込み分をコピペ',
]

@requires_csrf_token
def my_server_error(request, template_name='500.html'):
import json
import random
import requests
import traceback
requests.post(
webhook_url,
data=json.dumps({
'text': ''.join([
'Request uri: {request.build_absolute_uri()}',
traceback.format_exc(),
]),
'username': 'Django Server Error 500',
'icon_emoji': ':jack_o_lantern:',
})
)
message = '\<h1\>Server Error (500)\</h1\>'
message+= random.choices(cat_iframes)[0]
return HttResponseServerError(message)

Step2

Djangoのhandler500にカスタムしたものを上書きします。

your_prj_name/urls.py
from your_app_name.views import my_server_error
from django.conf.urls import handler500
handler500 = my_server_error