你可以自定义一个MiddleWare类,然后在settings.py引用这个中间件,添加到MIDDLEWARE_CLASSES里,然后在公共模板里添显示代码即可。

添加到公共模板里的代码:

<div id="stats"><!-- STATS: Total: %(totTime).2fs <br/>Python: %(pyTime).2fs<br/>DB: %(dbTime).2fs <br/>Queries: %(queries)d --></div>

StatsMiddleware 中间件代码

from django.db import connection

from time import time

from operator import add

import re

class StatsMiddleware(object):

def process_view(self, request, view_func, view_args, view_kwargs):

"""

In your base template, put this:

{% if debug %}  <div id="stats"><!-- STATS: Total: %(totTime).2fs <br/>

Python: %(pyTime).2fs <br/>

DB: %(dbTime).2fs <br/>

Queries: %(queries)d --></div> {% endif %}

Here's the css style I use:

#stats { font-size: 65%; padding: 5px;

z-index: 1000; position: absolute; right: 5px; top: 5px;

-moz-opacity: .7; opacity: .7;}

"""

#This stuff will only happen if debug is already on

if not settings.DEBUG:

return None

# get number of db queries before we do anything

n = len(connection.queries)

# time the view

start = time()

response = view_func(request, *view_args, **view_kwargs)

totTime = time() - start

# compute the db time for the queries just run

queries = len(connection.queries) - n

if queries:

dbTime = reduce(add, [float(q['time'])

for q in connection.queries[n:]])

else:

dbTime = 0.0

# and backout python time

pyTime = totTime - dbTime

stats = {

'totTime': totTime,

'pyTime': pyTime,

'dbTime': dbTime,

'queries': queries,

}

# replace the comment if found

if response and response.content:

s = response.content

regexp = re.compile(r'(?P<cmt><!--\s*STATS:(?P<fmt>.*?)-->)')

match = regexp.search(s)

if match:

s = s[:match.start('cmt')] + \

match.group('fmt') % stats + \

s[match.end('cmt'):]

response.content = s

return response

保存为:statsmiddleware.py, 
然后添加到settings.py的MIDDLEWARE_CLASSES里

文章转载:http://www.sharejs.com/codes/python/8638

django通过middleware计算每个页面的详细执行时间的更多相关文章

  1. django中间件Middleware

    熟悉web开发的同学对hook钩子肯定不陌生,通过钩子可以方便的实现一些触发和回调,并且做一些过滤和拦截. django中的中间件(middleware)就是类似钩子的一种存在.下面我们来介绍一下,并 ...

  2. Django中Middleware中间件

    Django中Middleware中间件 1 Middleware中间件概述 django中间middleware实质就是一个类,django会根据自己的规则在合适的时机执行中间件相应的方法.实际上当 ...

  3. 运行django新的项目,页面总是显示以前的项目,问题解决

    运行django新的项目,页面总是显示以前的项目 只需打开任务管理器,再进程中关闭python.exe 再次重新启动服务,python manage.py runserver.即可

  4. 开始学习Django,配置静态登录页面

    开始学习Django,配置静态登录页面 准备阶段 众所周知,Django是一个重量级的设备齐全的web开发框架.在学习Django前我们需要具备如下的知识点: python基础编程 并发 网络编程 H ...

  5. Django.template框架 template context (非常详细)

    前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的 这会导致几个问题: 1,显然,任何页面的改动会牵扯到Python代码的改动 网站的设计改动会比Python代码改 ...

  6. websocket+Django+python+paramiko实现web页面执行命令并实时输出

    一.概述 WebSocket WebSocket的工作流程:浏览器通过JavaScript向服务端发出建立WebSocket连接的请求,在WebSocket连接建立成功后,客户端和服务端就可以通过 T ...

  7. 利用Django中间件middleware解决用户未登录问题(转)

    add by zhj: Django的中间件一般用于处理通用性的问题,分为五种,按处理顺序为request_middleware,view_middleware,exception_middlewar ...

  8. Django訪问量和页面PV数统计

    http://blog.csdn.net/pipisorry/article/details/47396311 以下是在模板中做一个简单的页面PV数统计.model阅读量统计.用户訪问量统计的方法 简 ...

  9. Django中间件(Middleware)处理请求

    关注公众号"轻松学编程"了解更多. 1.面向切面编程 切点(钩子) 切点允许我们动态的在原有逻辑中插入一部分代码 在不修改原有代码的情况下,动态注入一部分代码 默认情况,不中断传播 ...

随机推荐

  1. primace 5.0软件的Debug ware 功能的使用方法简介

    用primace 软件已经一年多了,一直不知道Debug ware 软件怎么使用,上周终于逮住FAE请教了下这个功能的使用方法.发现这个功能和signalTap ii 原理不一样,这个是非时事的波形, ...

  2. sdut 2411:Pixel density(第三届山东省省赛原题,字符串处理)

    Pixel density Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Pixels per inch (PPI) or pi ...

  3. wp8 导航方法

    全局跳转 (App.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/Tools/SpatialQueryCha ...

  4. IIS-如果外网访问不到 域名

    如果访问不到 域名 , 可以 给域名的目录 增加“IIS_IUSERS”权限.

  5. Row_Number() OVER 的用法

    Row_Number() OVER 的用法: 为每一条分组记录返回一个数字. 参考博友 , 博友二

  6. 神经网络:多层网络与C++实现

    相关源码可参考最新的实现:https://github.com/ronnyyoung/EasyML ,中的neural_network模块,后持续更新,包括加入CNN的结构. 一.引言 在前一篇关于神 ...

  7. Codeforces Round #267 (Div. 2) C. George and Job DP

                                                  C. George and Job   The new ITone 6 has been released ...

  8. android MVC

    Android 的官方建议应用程序的开发采用MVC 模式.何谓MVC? MVC 是Model,View,Controller 的缩写,从上图可以看出MVC 包含三个部分: 模型(Model)对象:是应 ...

  9. C#图片处理示例(裁剪,缩放,清晰度,水印)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  10. BZOJ2757 : [SCOI2012]Blinker的仰慕者

    BZOJ AC900题纪念~~ 若K>0,则 设f[i][j]表示i位数字,积为j的数字的个数 g[i][j]表示i位数字,积为j的数字的和 DP+Hash预处理 查询时枚举LCP然后统计贡献 ...