【发布时间】:2015-11-01 09:13:23
【问题描述】:
我正在尝试在我的视图集上测试我的更新方法。视图集是从 drf 获取的模型视图集。要更新,我需要发送一个 put 请求。由于这并不总是受支持,因此有两种方法可以告诉服务器我正在发出 put 请求,第一种不符合我需要的方法是使用名为 _method 的附加字段来形成并将其设置为 put。由于我需要发布 json 数据,我需要使用第二种方式,它使用 X-HTTP-Method-Override 标头。
要在测试用例中发布我的数据,我使用以下代码:
header = {'X_HTTP_METHOD_OVERRIDE': 'PUT'}
response = client.post('/model/1/', content_type='application/json', data=post_data_clean, **header)
但不幸的是,我得到的结果是{'detail':'Method POST not allowed.'}。我使用插件 (Postman) 测试了服务器的行为,其中我也指定了 X-HTTP-Method-Override 标头。没有引发异常。我现在需要知道如何正确地将标头传递给 django 测试客户端,否则这里的测试会很烦人。
【问题讨论】:
标签: python django django-rest-framework put x-http-method-override