Django передает исключение ошибки в обработчик представлений об ошибках
urls.py
handler500 = 'main.views_error.view_error_500'
main/views_error.py
def view_error_500(request, exception=None):
print("APP: view_error_500")
print(exception)
return render(request,"error/500.html", status=500)
Так вот, когда я запрашиваю страницу с ошибкой, она выглядит как Exception does not pass to views:
APP: view_error_500
None
2024-02-04 18:24:58,641 - django.request 241 - ERROR - Internal Server Error: /office/order_14841/
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapper_view
return view_func(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapper_view
return view_func(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/code/main/views_admin.py", line 1453, in admin_orders_edit
order = Company_Orders.objects.get(id=kwargs["order_id"])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 647, in get
raise self.model.DoesNotExist(
main.models.Company_Orders.DoesNotExist: Company_Orders matching query does not exist.
Как будто нет обработчика view_error_500, но я уверен
Вопрос в следующем: есть ли способ получить информацию об ошибке в мой обработчик, чтобы я мог работать с ошибками?
Решение:
error_text = "".join(traceback.format_exc(Exception))
print(error_text)