Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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 使用django.test.Client'获取415代码;s面片法_Python_Django - Fatal编程技术网

Python 使用django.test.Client'获取415代码;s面片法

Python 使用django.test.Client'获取415代码;s面片法,python,django,Python,Django,编辑:我试过了所有的方法,但都没有解决问题。也就是说,我尝试在设置中将FormParser和MultiPartParser手动添加到默认的\u PARSER\u类中,并尝试将django.test.TestCase更改为rest\u framework.test.APITestCase。我仍然得到相同的错误代码 当我通过命令行向本地主机上运行的Django应用程序发送补丁请求时,如下所示: http -a <username>:<password> PATCH http:

编辑:我试过了所有的方法,但都没有解决问题。也就是说,我尝试在设置中将FormParser和MultiPartParser手动添加到默认的\u PARSER\u类中,并尝试将django.test.TestCase更改为rest\u framework.test.APITestCase。我仍然得到相同的错误代码

当我通过命令行向本地主机上运行的Django应用程序发送补丁请求时,如下所示:

http -a <username>:<password> PATCH http://127.0.0.1:8000/post/1/ text="new text"
我得到一个415(不支持的媒体)响应代码。请求中的
响应.数据
不支持的媒体类型“应用程序/八位字节流”。

如果我尝试将参数
content type='application/json'
添加到
补丁
方法中(我不必这样做,因为我可以使用
客户端
类在不提供该参数的情况下发送
GET
POST
DELETE
请求),我会得到400个错误代码。而
response.data
'JSON解析错误-需要用双引号括起来的属性名:第1行第2列(char1)

正如我所说,当我使用类的
get
delete
post
方法时,行为与预期一样


我是否正确使用了该方法?这是一个bug吗?

据我所知,
httpie
发送一个内容类型为
application/json
的请求

那么,试试这个:

import json 
data = json.dumps({'text': 'new text'})

client.patch('/post/1/', data, content_type='application/json')

可能是@Linch的重复,但这并不能解决问题。您是否尝试过像相关问题所建议的那样将字典编码为json,即
client.patch('/post/1/',json.dumps({'text':'newtext'}),content_type=“application/json”)
?这对我也适用,但是,作为一个全局解决方案,必须为每个测试转储数据,并为每个测试指定
内容\ u类型
,这有点像手动操作。您知道有没有更全球化的解决方案?谢谢事实上,看起来你可以在设置中全局设置它,按照文档的要求使用“TEST\u REQUEST\u DEFAULT\u FORMAT”:“json”
:我不知道为什么在POST中你可以错过内容类型而不获得415。。。
import json 
data = json.dumps({'text': 'new text'})

client.patch('/post/1/', data, content_type='application/json')