При желании можно указать пользовательский шаблон с именем "403.html" для управления отображением ошибок 403 HTTP.
Как правильно указал @ dave-halter, Шаблон 403 можно использовать только при повышении PermissionDenied
Ниже приведен пример представления для тестирования пользовательских шаблонов "403.html", "404.html" и "500.html"; Пожалуйста, убедитесь, что в настройках проекта установлено DEBUG = False , иначе вместо 404 и 500 фреймворк будет отображать трассировку.
from django.http import HttpResponse
from django.http import Http404
from django.core.exceptions import PermissionDenied
def index(request):
html = """
<!DOCTYPE html>
<html lang="en">
<body>
<ul>
<li><a href="/">home</a></li>
<li><a href="?action=raise403">Raise Error 403</a></li>
<li><a href="?action=raise404">Raise Error 404</a></li>
<li><a href="?action=raise500">Raise Error 500</a></li>
</ul>
</body>
</html>
"""
action = request.GET.get('action', '')
if action == 'raise403':
raise PermissionDenied
elif action == 'raise404':
raise Http404
elif action == 'raise500':
raise Exception('Server error')
return HttpResponse(html)