Skip to content

Commit 6ebf1ee

Browse files
Merge pull request #777 from ashan262/fix-db-error-500
Fix: Show friendly 500.html when database is unavailable
2 parents 4614385 + acc5e93 commit 6ebf1ee

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

codethesaurus/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
MIDDLEWARE = [
5050
'django.middleware.security.SecurityMiddleware',
5151
'django.contrib.sessions.middleware.SessionMiddleware',
52+
'web.middleware.DatabaseDownMiddleware',
5253
'django.middleware.common.CommonMiddleware',
5354
'django.middleware.csrf.CsrfViewMiddleware',
5455
'django.contrib.auth.middleware.AuthenticationMiddleware',

web/middleware.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# web/middleware.py
2+
from django.db.utils import OperationalError
3+
from django.shortcuts import render
4+
from django.http import HttpResponseServerError
5+
6+
class DatabaseDownMiddleware:
7+
"""
8+
Catch database OperationalError and show custom 500 error page.
9+
"""
10+
def __init__(self, get_response):
11+
self.get_response = get_response
12+
13+
def __call__(self, request):
14+
try:
15+
return self.get_response(request)
16+
except OperationalError:
17+
# Render error500.html template
18+
return HttpResponseServerError(render(request, "error500.html"))

web/templates/error500.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
<div class="container">
66
<div class="bg-light p-5 rounded">
7-
<h1>500 Error - Server Error!</h1>
7+
<!-- <h1>500 Error - Server Error!</h1>
88
<p class="lead">I don't know what went wrong, but the code broke!</p>
9-
<a class="btn btn-lg btn-primary" href="/" role="button">Go to the Home Page &raquo;</a>
9+
<a class="btn btn-lg btn-primary" href="/" role="button">Go to the Home Page &raquo;</a> -->
10+
<h1>We’ll be back soon!</h1>
11+
<p>The site is temporarily down due to maintenance. Please try again shortly.</p>
1012
</div>
1113
</div>
1214

0 commit comments

Comments
 (0)