Почему ValueError не обрабатывается в моем промежуточном программном обеспечении Django?Python

Программы на Python
Ответить
Anonymous
 Почему ValueError не обрабатывается в моем промежуточном программном обеспечении Django?

Сообщение Anonymous »

Я реализую базовое представление, которое вызывает ошибку ValueError:

Код: Выделить всё

from rest_framework.views import APIView

from django.http import HttpResponse

class ThreadView(APIView):

def get(self, request, *args, **kwargs):

limit = int(request.GET.get('limit', 10))

if limit < 0:
raise ValueError("Limit must be a positive number")

return HttpResponse("OK",200)
И я также сделал простое промежуточное программное обеспечение:

Код: Выделить всё

from django.http import JsonResponse

class ErrorMiddlewareHandler:
"""
Custom middleware to handle Errors globally and return a standardized JSON response.
"""

def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
try:
# Process the request and pass to the view
response = self.get_response(request)
except ValueError as v:
print("mIDDLEWARE ",v)
response = JsonResponse({'msg': str(v)}, status=400)  # You can change status as needed
except Exception as e:
response = JsonResponse({'msg': "Internal Error occired"}, status=500)
return response
Я зарегистрировал его в settings.py:

Код: Выделить всё

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'assistant_api.middleware.ErrorMiddlewareHandler.ErrorMiddlewareHandler', # 

Подробнее здесь: [url]https://stackoverflow.com/questions/79223449/why-valueerror-is-not-handled-upon-my-django-middleware[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»