DRF APIClient Данные для удаления поступают в request.data, а не в request.query_params

Я использую APIClient от DRF для написания автоматизированных тестов. И во время написания первого теста на удаление, я обнаружил, что очень странно, что передаваемые данные поступают в request.data, в то время как если я использую Axios или Postman, они всегда поступают в request.query_params. Любое объяснение, почему так происходит, и, желательно, метод использования APIClient.Delete, пока данные приходят в query_params, было бы замечательно!

Мой тест:

import pytest
from rest_framework.test import APIClient


@pytest.fixture()
def client():
    client = APIClient()
    client.force_authenticate()
    yield client


class TestDelete:

    def test_delete(client):
        response = client.delete('/comment', data={'team': 0, 'id': 54})

И мои взгляды

from rest_framework.views import APIView



class Comments(APIView):

    def delete(self, request):
        print(request.query_params, request.data)


>>> <QueryDict: {}> <QueryDict: {'team': ['0'], 'id': ['54']}>

Посмотрел на APIClient от DRF. Передача параметров не помогает. Метод delete, похоже, не имеет прямых аргументов, которые могли бы помочь. Так что я немного застрял

Хотя было предложено несколько хороших вариантов, они не работали с APIView от DRF. В итоге я использовал urllib и кодировал его вручную:

import pytest
from urllib.parse import urlencode
from rest_framework.test import APIClient


@pytest.fixture()
def client():
    client = APIClient()
    client.force_authenticate()
    yield client


class TestDelete:

    def test_delete(client):
        response = client.delete(f'/comment{urlencode(data)}')

Вернуться на верх