Django Rest Framework页面在某些情况下不显示POST结果

时间:2017-12-28 20:10:35

标签: django-rest-framework

我正在使用Django Rest Framework的应用程序。出于测试目的,我们偶尔会使用默认的Django Rest Framework页面进行调试或测试。

另一位开发人员最近发现,使用我们的一个端点(只有一个POST方法)会立即重定向,而不显示POST调用的最后发布内容。重定向导致HTTP 405(不允许使用方法)。此行为与我们的大多数其他端点不同 - 即使是那些只有POST选项的端点。当他们被发布到时,他们会显示POST调用的内容,以及允许其他POST的文本框。

在深入研究中,我发现这个特定的端点以HttpResponse对象的形式返回响应,而不是Response对象。它还为HttpResponse对象指定了application/json内容类型。

在玩这个时,我发现如果我将其切换为使用Response对象,它不会导致Django Rest Framework页面重定向,并且会在页面上显示响应。但是,如果我在Response对象上指定content_type,则Django Rest Framework页面将再次开始重定向,而不显示上次发布的内容。

在上述任何一种情况下,仍然可以通过使用Chrome开发者工具并启用"保留日志"来查看响应,以便网络通话记录不会被清除重定向,但这不太理想。

在更改它以使用Response而不是HttpResponse对象时,它也打破了我们的一个单元测试,因为单元测试没有指定application/json的内容类型标题,但是期待JSON响应。可能还有其他地方也在调用它而没有指定content-type标头,所以理想情况下我希望能够在响应上指定内容类型,但仍然有Django Rest Framework页面显示最后一个POSTed内容。

我的问题是:

  • 是什么原因导致默认的Django Rest Framework页面显示最后发布的内容(而不是重定向)?
  • 为什么在Response上指定内容类型导致Django Rest Framework页面不显示上次发布的内容?

0 个答案:

没有答案