Как вернуть объект rest_framework.response из класса промежуточного ПО django?
Я пытаюсь написать класс промежуточного программного обеспечения, который гарантирует, что пользователь войдет в систему.
Но проблема в том, что этот класс промежуточного программного обеспечения применим только к небольшому набору представлений, и эти представления возвращают объект DRF Response
, а не объект HTTPResponse
, и эти представления также украшаются с помощью api_view
.
Поэтому, когда я пытаюсь вернуть объект Response из класса middleware, он вызывает эту ошибку.
assert renderer, ".accepted_renderer not set on Response"
AssertionError: .accepted_renderer not set on Response
Я немного искал SO, и я предполагаю, что ошибка каким-то образом связана с api_view
decorator. Но я смущен тем, как решить эту проблему.
Любая помощь приветствуется.:)
Ответы
Ответ 1
Недавно я столкнулся с этой проблемой. Это решение не использует ответ Django Rest Framework, но если ваш сервер просто возвращает JSON, это решение может сработать для вас.
Новое в django 1.7 является типом ответа JSONResponse.
https://docs.djangoproject.com/en/1.7/ref/request-response/#jsonresponse-objects
В промежуточном программном обеспечении вы можете вернуть эти ответы, не допуская ошибок "Нет принятых визуализаторов" и "Ответ не имеет атрибутов атрибутов".
Он очень похож на формат DRF Response
Импорт выглядит следующим образом:
from django.http import JsonResponse
И как вы его используете:
return JsonResponse({'error': 'Some error'}, status=401)
Надеюсь, это поможет вам!