У меня есть проект django 1.11, запущенный с restframework 3.6.4.Я также использую djangorestframework-jsonapi версии 2.4.0.
Если я проверяю request.META в функции отправки APIView в rest_framework / views, у меня есть следующее:
HTTP_ACCEPT: 'application/vnd.api+json',
CONTENT_TYPE: 'application/vnd.api+json',
После обновления restframeworkдо 3.7.0 я вижу, что там же:
HTTP_ACCEPT: 'application/vnd.api+json',
CONTENT_TYPE: 'application/json; charset=None'
У меня есть мой View, который использует APIView (rest_framework.views) в качестве родительского класса.Каждый POST, проходящий через это представление, получает метод отправки APIView.Запрос, отправляемый методу диспетчеризации, уже имеет несоответствие между HTTP_ACCEPT и CONTENT_TYPE.
В результате используется неправильный JSONParser, и из-за несовпадений в request.data все мои тесты не пройдены.
Мои настройки:
REST_FRAMEWORK = {
...
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
'rest_framework_json_api.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
),
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework_json_api.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
),
'DEFAULT_METADATA_CLASS': 'rest_framework_json_api.metadata.JSONAPIMetadata',
...
}
Соответствующий коммит в django-rest-framework, который меняет функциональность:
https://github.com/encode/django-rest-framework/commit/0ec915e6234bdc602e131f08e8cff46fcf3dc3ff
Может быть, у кого-то есть идея, почемуэто происходит и как я могу это исправить?