django:保存每个页面最干净的方法

时间:2012-08-17 21:59:06

标签: python django

我想跟踪我的django网站的所有用户正在做什么。我想通过保存提供给他们的每个HTML页面来做到这一点。最简单的方法是什么?我目前正在考虑制作一个装饰器,在将HTML保存到文件之前将其保存到文件中,但这需要在我的所有视图上添加装饰器,这看起来并不理想。

3 个答案:

答案 0 :(得分:3)

我认为更好的方法是保存用户提出的查询,因为您始终可以从查询中重新生成html。然后,您可以编写一个中间件来处理所有传入的请求As per here并将查询保存到数据库中。如果您确实要保存html,可以使用process_response功能进行保存。 Source

答案 1 :(得分:1)

使用django信号。

当Django完成处理request_finished时,会调用HttpRequest信号,该params信号发生在您为页面提供服务的每个视图的末尾。在这里,您可以访问响应中的response_object集,并按照向用户显示的方式生成页面,或者只保存{{1}},然后运行批处理以使其脱机可视化。

Signal documentation

答案 2 :(得分:0)

您可以实施per site cache,然后查询缓存以获取统计信息。然而,正如其他人发布的中间件似乎是理想的。

但是 - 请记住,在每个请求上都会调用中间件,因此如果您正在进行数据库写入等i / o繁重的任务,则会对您网站的性能产生负面影响。

相关问题