Несоответствие HTTP_ACCEPT и CONTENT_TYPE после обновления до restframework 3.7.0 - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть проект 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

Может быть, у кого-то есть идея, почемуэто происходит и как я могу это исправить?

...