- 浏览: 248921 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
runjia1987:
cpu 100%,是因为读=-1时,没有解注册OP_READ, ...
java nio网络编程的一点心得 -
two_plus:
按照你的例子 服务端变成读循环了...
java nio网络编程的一点心得 -
ilovemyyang:
我也遇到同样的空循环问题,也是百度才找到了的,楼主给力哦
java nio网络编程的一点心得 -
高攀sky:
Python发邮件 -
fobdddf:
fobdddf 写道朋友你好,我试了一下数组的那个例子,反汇编 ...
读《深入理解计算机系统》
主要用于在Html中递归输出对象的属性,这对调试Django相当有用。
用法:
实现:
用法:
{% inspect object %}
实现:
from django import template import re register = template.Library() def do_inspect(parser, token): try: tag_name, var_name = token.split_contents() except ValueException: msg = '%r tag requires a single parameter' % token.split_contents()[0] raise template.TemplateSyntaxError(msg) return DumpVarNode(var_name) import types method_types = (types.BuiltinFunctionType, types.BuiltinMethodType, types.MethodType, types.FunctionType,) from django.utils.html import escape class DumpVarNode(template.Node): def __init__(self, var_name): self.var_name = var_name self.var = template.Variable(var_name) self._objects = [] # contains travased objects def render(self, context): var_value = self.var.resolve(context) html = ''' <script> if (!window.jQuery) { document.write('<scrip' + 't src="http://code.jquery.com/jquery-1.4.2.js" type="text/javascript"></sc' + 'ript>'); } </script> <script> (function($) { $(function() { $('.djt_var_head').click(function() { $('.djt_display_area textarea').val($(this).find('.djt_var_detailed').text()) }); $('.djt_exp').click(function() { $(this).closest('.djt_var_head').find('+ .djt_var_body').toggle(); var expcol = $(this).toggleClass('djx_expanded'); if (expcol.hasClass('djx_expanded')) { expcol.html('-'); } else if (varBody.length > 0) { expcol.html('+'); } }) }); })(jQuery); </script> <style type="text/css"> .djt_render { font-family: monospace; color: #333; line-height: 150%; } .djt_var_name { color: #000; } .djt_var_value { color: #666; } .djt_var_body { padding-left: 2em; } .djt_type_type { color: #00681C; font-weight: bold; } .djt_type_str, .djt_type_int, .djt_type_long, .djt_type_float, .djt_type_bool { color: #3333CC; font-weight: bold; } .djt_type_instance { color: #256; font-weight: bold; } .djt_var_id { /*color: blue;*/ } </style>''' html += '<div class="djt_render">' html += self._render_var(self.var_name, var_value, expand_props=True) html += '<div class="djt_display_area"><textarea rows="10" cols="80"></textarea></div>' html += '</div>' return html def _render_var(self, var_name, var_value, expand_props=False): already_exists = any([var_value is x for x in self._objects]) self._objects.append(var_value) props = self.get_var_props(var_value) html = '<div class="djt_var">\n' html += self._render_var_head(var_name, var_value, props, expand_props, exists=already_exists) html += self._render_var_body(var_value, props, expand_props, exists=already_exists) html += '</div>' return html def _render_var_head(self, var_name, var_value, props, expand_props = False, exists=False): html = '<div class="djt_var_head">' if not exists: html += '<a name="djt_%s"></a>' % id(var_value) expanded = len(props) == 0 or exists or expand_props html += '''\ <span class="djt_exp %s">%s</span> <span class="djt_var_name">%s:</span> <span class="djt_var_value djt_type_%s">%s</span> %s <div class="djt_var_detailed" style="display:none">%s</div> </div>''' % ( 'djx_expanded' if expanded else '', '-' if expanded else '+', escape(var_name), self._value_type(var_value), self._str_value(var_value), self._render_return_link(var_value) if exists else '', self._detailed_str(var_value), ) return html def _render_return_link(self, var): return '<a class="djt_jumplink" href="#djt_%s">here<a/>' % id(var) def _render_var_body(self, var_value, props, expand_props = False, exists=False): if len(props) == 0 or exists: return '' html = '<div class="djt_var_body" %s>' % ('' if expand_props else 'style="display:none"') for prop_name, prop_value in props: html += self._render_var(prop_name, prop_value) html += '</div>' return html def _value_type(self, var): if var is None: return 'none' if type(var) in (bool, int, long, float, str, type): return type(var).__name__ if type(var) in (unicode,): return 'str' return 'instance' def _detailed_str(self, var): tmp = '''\ type: %s bases: %s id: %s str: "%s" repr: %r ''' % ( type(var).__name__, type(var).__bases__, id(var), var, var, ) return escape(tmp) def get_var_props(self, var_value): if isinstance(var_value, (int, long, bool, float, str, unicode)): return [] if isinstance(var_value, method_types): return [] props = [] for prop in dir(var_value): if prop.startswith('_'): continue try: prop_value = getattr(var_value, prop) # ingore builtin type if isinstance(prop_value, method_types): continue props.append( (prop, prop_value) ) except Exception, e: props.append( (prop, e) ) # TODO: indicator as error return props def _str_value(self, val): if isinstance(val, (bool, int, long, str, float)): strval = repr(val) elif isinstance(val, unicode): strval = repr(val)[1:] elif isinstance(val, (list, tuple, dict)): strval = str(val) else: try: strval = val.__class__.__name__ except: strval = 'error occured' return escape(str(strval)) register.tag('inspect', do_inspect)
发表评论
-
Python模板性能评测
2011-11-28 18:00 5525本篇主要是对django, jinja ... -
Mongodb内嵌文档插入性能评测
2011-11-20 18:03 11318Mongodb作为典型的文档数据库,支持内嵌文档和复杂的查询, ... -
支持通配符的DNS代理
2011-05-05 22:23 6937hosts文件可以手动配置一些域名的IP地址,它的优先级最高, ... -
python变量覆盖陷阱
2011-04-03 21:35 3608我已经好几次碰到这样的错误了,每次碰到都花费我大量的时间,下面 ... -
在App Engine下运行Django 1.2
2011-03-20 22:12 1891我不知道App Engine是从什 ... -
实现简单的Future
2011-02-19 19:38 1567异步调用的困难之处我们不知道它什么时候会返回,通常的解决方法是 ... -
创建简单声明式python对象模型
2011-02-19 12:27 2681创建简单python声明式对象模型 要创建一个简单的Auth ... -
用RestrictedPython创建Python Sandbox
2011-02-13 17:35 2780众所周知在Python下可以 ... -
wxpython中工作线程与主线程交互
2011-01-15 23:56 6031在wxpython中,像其它GUI ... -
Python下Base64编码
2010-12-04 12:53 2529在Python下有Base64编码的库,可直接用,我自己写了个 ... -
Python中用MetaClass实现委托、不可变集合
2010-09-13 16:01 5254委托(delegate)是许多设计模式(如Decorator, ... -
用编程语言作数据库测试的配置
2010-09-11 11:25 1269在上一篇博客:django, mo ... -
django, mongodb与测试
2010-09-11 10:05 3257在django下很容易写测试,只需要继承DjangoTestC ... -
一个简单的Form向导实现
2010-06-20 18:42 1318Django的contrib中带了个FormWizard,但是 ... -
几个用于调试Django模板的标签
2010-06-15 17:18 4530Django模板有诸多限制,例如不能调用方法,不能执行任意的P ... -
探索Python下的property, classmethod, staticmethod的实现
2010-05-30 21:10 4050Python有几个内置方法poperty, classmeth ... -
Python农历公历转换
2010-04-24 17:38 2139实现中主要有两个方法,一个是get_lunar_date,它根 ... -
Python发邮件
2010-03-27 11:25 2309下面的代码的作用是将电子书作为附件发送到163邮箱。 ...
相关推荐
一个Django模板,用于使用Flask作为前端,Django作为后端
django-inline-svg - 一个Django的简单SVG模板标签
Django_layui后台模板
django项目及环境搭建好后,创建模板文件。
通过Chrome开发者工具调试Django应用
Django入门基础教程:django模板 Django入门基础教程:django模板
一套精美的博客模板 ,适用于各种后台,如果要是用django开发,可以参考追梦任务的博客:https://www.zmrenwu.com/post/2/
django-classy-tags, 基于类的Django 模板标记 django-classy-tags请参考文档/目录中的文档以获得帮助。... 这里项目这个项目的目标是创建一种新的编写 Django 模板标签的方法,它与当前的Django 模板基础结构
在django框架项目里实现了一个echarts数据可视化看板的模板界面,不仅实现了可视化看板的布局(标题、当前时间),而且里面还包括了2个柱状图、2个折线图、2个饼图的使用,以及中国地图map的使用。
打算做网站左边栏的二级链接,通过从数据库外联键(ForeignKey)获取子节点,再使用Django模板{% for <个体> in <父节点>.<个体所在表名>_set.all %}产生第二季链接。 但该模板还存在渲染错误,会出现子节点渲染后的父...
项目标题:高效 Django 模板引擎开发源码集合 技术栈:主要采用 Python 语言进行开发。 包含文件类型:共计 36 个文件,其中包括: - Python 源代码文件(.py):31 个 - 文本文件(.txt):2 个 - Git 忽略配置(....
django博客项目前端模板
一组Django模板标记,用于呈现指向管理的链接。 依存关系 > = (如果不使用adminlinks_assets模板标记,则可能支持> = ) > = 正在安装 可以为您做到: pip install git+...
Everbug是一款轻量级的Django中间件,适用于Chrome / Firefox扩展,易于安装。
django-email-from-template:发送完全由Django模板生成的电子邮件
Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统...
模板语言django96官方帮助文档
这是一个简单的扩展,用于将 Django 模板的语法高亮添加到 Brackets 感谢的帮助,在我看到他的例子后,很容易制作这个扩展,因为扩展只会带回 。 路线图 主要想法是使用模板,因为它就像 Django 模板,使用该扩展的...