python delete请求,python – Flask test_client:使用数据测试DELETE请求

博客讨论了在Werkzeug中遇到的问题,即DELETE请求无法设置content_type,导致表单数据无法正常处理。作者指出这是一个Werkzeug的bug,并已提交拉取请求到官方仓库进行修复。解决方案是在请求中明确指定content_type。该问题已在后续版本中得到解决。
摘要由CSDN通过智能技术生成

我刚遇到同样的问题,这基本上是因为Werkzeug的测试方法目前不支持设置DELETE请求的content_type.

代码here显示了Werkzeug如何获取内容类型:

def _get_content_type(self):

ct = self.headers.get('Content-Type')

if ct is None and not self._input_stream:

if self.method in ('POST', 'PUT', 'PATCH'):

if self._files:

return 'multipart/form-data'

return 'application/x-www-form-urlencoded'

return None

return ct

如果没有content_type,那么表单数据永远不会进入environ并进入请求,因此Flask服务器实际上不会发送数据.

最终,这是Werkzeug的一个错误,因为您可以创建一个使用DELETE方法并且还包含表单数据的curl请求.我已经向Werkzeug回购提交了拉取请求以解决此问题.随意在github上加入:https://github.com/mitsuhiko/werkzeug/pull/620

更新:要实际解决您的问题,您可以通过在请求中明确说明内容类型来解决此问题,如下所示:

def test_delete(self):

rv = self.app.delete('MyEndPoint',

data={'arg1', 'val'},

headers={'Content-Type': 'application/x-www-form-urlencoded'})

再次更新:我提交的拉取请求已经过审核,改进和合并,并将包含在Werkzeug的0.10版本中,所以希望这不应该是一个问题:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值