Django response Ожидалось, что из представления будет возвращен `Response`, `HttpResponse` или `HttpStreamingResponse`, но получен `<class 'NoneType'>`.
Моя модель имеет поля атрибутов как файл и человек, который его загрузил, в моем случае я хотел бы показать ошибку "файл не найден" на фронт-энде моего сайта, когда нет данных в модели, но вместо этого она приводит меня к этой ошибке Я реализовал свой код следующим образом
@api_view(('GET',))
def template_view(request):
data = Mymodel.objects.first()
try:
if data:
response = HttpResponse(
data.file,
content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, '
'application/vnd.ms-excel',
)
return response
except FileNotFoundError:
raise ValueError('No file found')
Возможно, вместо повторного вызова ValueError, вы можете возвращать ошибку 400 например.
@api_view(('GET',))
def template_view(request):
data = Mymodel.objects.first()
try:
response = HttpResponse(
data.file,
content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, '
'application/vnd.ms-excel',
)
return response
except (FileNotFoundError, AttributeError):
return HttpResponse("No File Found", status=400)
Я бы также перехватывал ошибку AttributeError, а не ставил оператор if для данных