Well I have tried 3 things:
strike 1:
I have created custom functions for every type of error in views.py file on my ROOT_URLCONF app such as
def custom_404_view(request, exception=None):
return render(request, 'dev_404.html', status=404)
def custom_400_view(request, exception=None):
return render(request, 'dev_404.html', status=400)
def custom_500_view(request):
return render(request, 'dev_404.html', status=500)
Then on my urls.py file, I’ve imported the file:
from django.conf.urls import handler404, handler400, handler500
from myapp.views import custom_404_view, custom_400_view, custom_500_view
handler404 = custom_404_view
handler400 = custom_400_view
handler500 = custom_500_view
urlpatterns = [
# the rest of the paths
]
Strike 2:
A middleware, I create at the my ROOT_URLCONF app a middleware.py file with:
from django.shortcuts import render
from django.conf import settings
from django.core.exceptions import DisallowedHost
class Dev404Middleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if response.status_code == 404 and settings.DEBUG:
return render(request, 'dev_404.html', status=404)
return response
class Dev500Middleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if response.status_code == 500 and settings.DEBUG:
return render(request, 'dev_404.html', status=500)
return response
class Dev400Middleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if response.status_code == 400 and settings.DEBUG:
return render(request, 'dev_404.html', status=400)
return response
class HandleDisallowedHostMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
try:
response = self.get_response(request)
except DisallowedHost:
return render(request, 'dev_404.html', status=400)
return response
Then I add them as the middleware variable on my settings file
MIDDLEWARE = [
'myapp.middleware.Dev404Middleware',
'myapp.middleware.Dev400Middleware',
'myapp.middleware.Dev500Middleware',
'myapp.middleware.HandleDisallowedHostMiddleware',
# the rest of the middlewares
]
strike 3
logging settings, on settings file I added this:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
},
'loggers': {
'django.security.DisallowedHost': {
'handlers': ['null'],
'propagate': False,
},
},
}
The first and the second try help me for example to disable the errors for the “not found page” but I haven’t been able for example to disable “DisallowedHost” which seems to be the more difficult.
(i have tried several combinations but it seems I haven’t get the right settings )