如何存储Django请求以便重复/重新运行以进行调试?

时间:2015-05-20 10:25:23

标签: python django debugging httprequest

Chrome具有极好的功能,可以在网络中请求检查员......:

enter image description here

...您可以将整个请求复制为cURL命令:

enter image description here

这意味着您可以反复重新运行完全请求以方便调试。

我的情况是,我有一小部分Beta测试人员使用Django网站,可以从各种原生移动应用程序以及桌面和移动浏览器访问。

当一个非常小的bug出现时,他们会给我发一份报告,当然我要做的第一件事就是重复这个bug。为了实现这一点,我希望能够将Django request对象存储在我的数据库中,然后将其拉出并随意重新运行,具有相同的头,有效负载,用户代理和所有内容 - 所以Django应用程序认为请求只是被再次收到。

我已经有一个中间件来捕获每个请求的request对象,并将request.META信息保存到数据库。

有没有办法超越这个范围,以便可以随意存储和重新运行整个请求?

1 个答案:

答案 0 :(得分:0)

您应该能够通过从日志中提取标头信息来重建请求功能。因此,第一步是确保记录所有请求(标准日志记录将执行),并从请求中提取您认为必要的所有信息。

如果您想查看该请求的用户上下文中发生了什么,那么您需要能够首先构建有效的用户会话(针对该特定用户)。您可以使用简单的中间件解决方案来解决这个问题,但也有一些库可以为您提供这些功能。