Request.data или Request.query_params для доступа к параметрам в POST? - PullRequest
1 голос
/ 14 марта 2019

Я создаю простой API и пытаюсь проверить POST-запрос. Запрос на публикацию должен создать новую запись, основанную только на одном параметре: title.

Я использую тест manage.py и настроил клиент:

client = rest_framework.test.APIClient()

Проблема: она работает нормально, когда я даю URL вручную («фрагмент» - это название фильма).

response = client.post('/movies/?title=snatch', format='json')

В этом случае я могу получить доступ к заголовку в моем представлении request.query_params.get ('title') и request.data.get ('title').

Но когда я пытаюсь передать заголовок в аргументе data:

response = client.post('/movies/', data={'title':'snatch'}, format='json')

Это должно иметь доступ к '/ movies /? Title = snatch', но вместо этого имеет доступ только к '/ movies /'. Я могу получить доступ к заголовку через request.data.get ('title'), но не через request.query_params.get ('title').

Как получить доступ к параметрам, отправленным в POST-запросе? Правильный ли доступ через request.data? Может кто-нибудь дать мне лучшее объяснение различий и вариантов использования?

1 Ответ

2 голосов
/ 14 марта 2019

request.data содержит данные, отправленные в теле запроса, т. Е. С параметром data здесь:

response = client.post('/movies/', data={'title':'snatch'}, format='json')

request.query_params хранить данные, отправленные в параметрах строки запроса, т.е. заголовок здесь:

response = client.post('/movies/?title=snatch', format='json')

Чтобы exepmlyfy, если вы отправите такой запрос:

response = client.post('/movies/?director=guyritchie', data={'title':'snatch'}, format='json')

вы можете получить Director параметр через request.query_params и title параметр через request.data

Подробнее о разнице между данными и query_params: HTTP POST с параметрами запроса URL - хорошая идея или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...