gpt4 book ai didi

python - Request.data 或 Request.query_params 来访问 POST 中的参数?

转载 作者:行者123 更新时间:2023-11-30 21:57:45 24 4
gpt4 key购买 nike

我正在构建一个简单的 API,并尝试测试 POST 请求。 Post 请求应仅基于一个参数创建一条新记录:标题。

我正在使用manage.py test进行测试,并且我已经设置了客户端:

client = rest_framework.test.APIClient()

问题:当我手动提供 URL 时,它工作正常(“snatch”是电影的标题)。

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

在这种情况下,我可以在 View request.query_params.get('title') 和 request.data.get('title') 中访问标题。

但是当我尝试在数据参数中传递标题时:

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访问是正确的方式吗?有人可以给我更好的解释差异和用例吗?

最佳答案

request.data 保存请求正文中发送的数据,即此处使用 data 参数:

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

request.query_params 保存查询字符串参数中发送的数据,即此处的标题:

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

要执行,如果您发送这样的请求:

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

可以通过request.query_params获取director参数,通过request.data获取title参数

有关 data 和 query_params 之间差异的更多信息: HTTP POST with URL query parameters -- good idea or not?

关于python - Request.data 或 Request.query_params 来访问 POST 中的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55157826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com