Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Request.data或Request.query_参数访问POST中的参数?_Python_Django_Django Rest Framework - Fatal编程技术网

Python Request.data或Request.query_参数访问POST中的参数?

Python Request.data或Request.query_参数访问POST中的参数?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在构建一个简单的API,并尝试测试POST请求。Post请求应仅基于一个参数创建新记录:title 我正在使用manage.py test进行测试,并已设置客户端: client = rest_framework.test.APIClient() 问题:当我手动提供URL时,它工作正常。抓取是电影的标题 response = client.post('/movies/?title=snatch', format='json') 在这种情况下,我可以访问视图request.query_参数

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

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

client = rest_framework.test.APIClient()
问题:当我手动提供URL时,它工作正常。抓取是电影的标题

response = client.post('/movies/?title=snatch', format='json')
在这种情况下,我可以访问视图request.query_参数中的标题。获取'title'和request.data.get'title'

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

response = client.post('/movies/', data={'title':'snatch'}, format='json')
这应该访问“/movies/?title=scrapt”,但只能访问“/movies/”。 我可以通过request.data.get'title'访问标题,但不能通过request.query\u params.get'title'访问标题

如何访问POST请求中发送的参数?通过request.data访问是否正确? 有人能给我一个更好的解释这些差异和用例吗?

request.data保存在请求正文中发送的数据,即这里的数据参数:

response = client.post('/movies/', data={'title':'snatch'}, format='json')
request.query_参数保存在查询字符串参数中发送的数据,即此处的标题:

response = client.post('/movies/?title=snatch', format='json')
要执行分析,如果您发送此类请求:

response = client.post('/movies/?director=guyritchie', data={'title':'snatch'}, format='json')
您可以通过request.query_参数获取director参数,通过request.data获取title参数

有关数据和查询参数之间差异的更多信息:

谢谢,在接受的答案中包含了链接。谢谢,这很有帮助。我编辑了答案,其中包括一个来自Waket Zheng的链接,因为它也帮助我理解了这个问题。