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)