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