Django, пользовательская страница 404 перенаправляется на 500 при Debug=False, потому что Django не может найти параметр исключения

Когда Debug = True django возвращает Page not found (404) страницу, что совершенно нормально

Но когда я изменяю Debug = False django возвращает Server Error (500) и сервер показывает эти сделанные запросы:

[30/Jul/2022 12:29:44] "GET /__reload__/events/ HTTP/1.1" 500 145
[30/Jul/2022 12:29:44] "GET /__reload__/events/ HTTP/1.1" 500 145
[30/Jul/2022 12:29:44] "GET /sdfs HTTP/1.1" 500 145
[30/Jul/2022 12:29:45] "GET /favicon.ico HTTP/1.1" 302 0

myproject main urls.py

from django.conf.urls import handler404
handler404 = 'myproject.views.custom_page_not_found'

обратите внимание, что hander404 не найден django handler404 not found

мой views.py

def custom_page_not_found(request, exception, template_name="errors/404.html"):
    return render(request, template_name, status=404)

Пожалуйста, не здесь django не может найти параметр exception exception параметр не найден

В предыдущих вопросах сообщества я не смог найти ни одного вопроса, который бы указывал на проблему exception parameter not found. Обратите внимание, что я не использую шаблоны django {% %} в моем 404.html файле

Я думаю, что когда django не находит параметр исключения, он возвращает серверную ошибку 500.

вам не нужно импортировать этот обработчик from django.conf.urls import handler404.

вы должны просто определить переменную в url:

handler404 = 'myproject.views.custom_page_not_found'

как функцию вида (лучше) можно сделать так:

def custom_page_not_found(request, *args, template_name="errors/404.html", **kargs):
    return render(request, template_name, status=404)
Вернуться на верх