【发布时间】:2012-08-17 21:59:06
【问题描述】:
我想跟踪我的 django 网站的所有用户都在做什么。我想通过保存提供给他们的每个 HTML 页面来做到这一点。最简单的方法是什么?我目前正在考虑制作一个装饰器,在提供 HTML 之前将其保存到文件中,但这需要在我的所有视图上添加该装饰器,这似乎并不理想。
【问题讨论】:
我想跟踪我的 django 网站的所有用户都在做什么。我想通过保存提供给他们的每个 HTML 页面来做到这一点。最简单的方法是什么?我目前正在考虑制作一个装饰器,在提供 HTML 之前将其保存到文件中,但这需要在我的所有视图上添加该装饰器,这似乎并不理想。
【问题讨论】:
我相信更好的方法是保存用户所做的查询,因为您始终可以从查询中重新生成 html。然后您可以编写一个中间件来处理所有传入的请求As per here 并将查询保存到数据库中。如果你真的想保存 html,你可以使用process_response 函数进行保存。 Source
【讨论】:
.html
使用 django 信号。
request_finished 信号在 Django 完成处理 HttpRequest 时被调用,这发生在您返回页面的每个视图的末尾。在这里,您可以访问响应中设置的params,并按照向用户显示的方式生成页面,或者只需保存response_object,然后运行批处理以将其离线可视化。
【讨论】:
您可以实现per site cache,然后查询缓存以获取您的统计信息。然而,正如其他中间件所发布的那样,这似乎很理想。
但是 - 请记住,每个请求都会调用中间件,因此如果您正在执行 i/o 繁重的任务,例如数据库写入,则会对您网站的性能产生负面影响。
【讨论】: