- 浏览: 252806 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 5589本篇主要是对django, jinja ... -
Mongodb内嵌文档插入性能评测
2011-11-20 18:03 11403Mongodb作为典型的文档数据库,支持内嵌文档和复杂的查询, ... -
支持通配符的DNS代理
2011-05-05 22:23 6989hosts文件可以手动配置一些域名的IP地址,它的优先级最高, ... -
python变量覆盖陷阱
2011-04-03 21:35 3650我已经好几次碰到这样的错误了,每次碰到都花费我大量的时间,下面 ... -
在App Engine下运行Django 1.2
2011-03-20 22:12 1924我不知道App Engine是从什 ... -
实现简单的Future
2011-02-19 19:38 1613异步调用的困难之处我们不知道它什么时候会返回,通常的解决方法是 ... -
创建简单声明式python对象模型
2011-02-19 12:27 2732创建简单python声明式对象模型 要创建一个简单的Auth ... -
用RestrictedPython创建Python Sandbox
2011-02-13 17:35 2975众所周知在Python下可以 ... -
wxpython中工作线程与主线程交互
2011-01-15 23:56 6074在wxpython中,像其它GUI ... -
Python下Base64编码
2010-12-04 12:53 2594在Python下有Base64编码的库,可直接用,我自己写了个 ... -
Python中用MetaClass实现委托、不可变集合
2010-09-13 16:01 5316委托(delegate)是许多设计模式(如Decorator, ... -
用编程语言作数据库测试的配置
2010-09-11 11:25 1315在上一篇博客:django, mo ... -
django, mongodb与测试
2010-09-11 10:05 3309在django下很容易写测试,只需要继承DjangoTestC ... -
一个简单的Form向导实现
2010-06-20 18:42 1363Django的contrib中带了个FormWizard,但是 ... -
几个用于调试Django模板的标签
2010-06-15 17:18 4587Django模板有诸多限制,例如不能调用方法,不能执行任意的P ... -
探索Python下的property, classmethod, staticmethod的实现
2010-05-30 21:10 4107Python有几个内置方法poperty, classmeth ... -
Python农历公历转换
2010-04-24 17:38 2215实现中主要有两个方法,一个是get_lunar_date,它根 ... -
Python发邮件
2010-03-27 11:25 2369下面的代码的作用是将电子书作为附件发送到163邮箱。 ...
相关推荐
8. **模板调试**:Django提供了一个强大的模板错误报告系统,它会在出错时显示详细的错误信息,帮助开发者快速定位问题。 综上所述,Django模板是构建动态Web应用的核心组件。通过熟练掌握模板语言,开发者能有效地...
3. **模板继承**:Django模板支持模板继承,这意味着你可以创建一个基础模板,包含通用布局和部分,然后其他模板可以继承这个基础模板,只覆盖特定的部分,提高代码复用性和维护性。 4. **模板标签**:如`{% for %}...
- **include标签**:允许将一个模板包含到另一个模板中,通常用于复用小段代码。 4. **过滤器** - **过滤器**是用于修改变量值的函数,如`|capfirst`用于首字母大写,`|length`返回序列长度。过滤器可以通过管道...
- Django REST framework 是一个强大的工具,用于构建 RESTful API。 - 它与 Django 模板系统紧密集成,提供 JSON 模板渲染和自定义响应类。 - 使用 `rest_framework.renderers.JSONRenderer` 可以将数据渲染为 ...
在 Django 模板引擎中,block 是一个基本的标签,用于定义一个块,该块可以被子模板覆盖。使用 block 标签可以将模板拆分成多个小块,每个块可以单独维护和更新。例如: ```html <!-- base.html --> {% block ...
它表明我们有一个特定的项目模板,该模板结合了两个重要的技术:Django 1.0 和 Google App Engine。Django是一个广泛使用的Python Web框架,用于快速开发和清洁、实用的设计。而Google App Engine则是一个平台即服务...
Django是一个高效的Python web框架,以其遵循DRY(Don't Repeat Yourself)原则和高度可重用组件而闻名。以下是从标题和描述中提取的10个Django使用技巧,这些技巧可以帮助开发者更高效地使用Django进行开发。 1. *...
【标题】"django简易版网盘"所涉及的知识点主要集中在使用Django框架构建一个基本的文件存储系统,它提供了用户注册、登录、文件上传和下载的功能。Django是Python Web开发的一个强大框架,以其MVT(Model-View-...
Django模板语言(DTL)允许设计者和开发者将逻辑代码与展示代码分离。模板可以调用变量来展示数据,使用标签和过滤器来控制内容的显示方式,还可以包含子模板来避免重复代码。 5. 表单处理(Forms) Django的表单...
模板缓存是Django模板系统中的一个重要特性,它可以帮助提高网站性能。通过将经常变化的内容与较少变化的部分分开,并对后者进行缓存,可以显著减少服务器负载并加快页面加载速度。书中详细解释了如何设置和使用模板...
- **项目创建**: 使用 `django-admin startproject` 命令快速创建一个新的 Django 项目。 **1.3 模型层** - **数据模型定义**: 在 Django 中,通过定义 Python 类来表示数据库表结构。 - **迁移管理**: 使用 ...
Django 是一个用 Python 编写的开源 Web 开发框架,它以其“ Batteries Included ”(内置功能丰富)的理念而著名。在开发多语言网站时,Django 提供了强大的国际化(i18n,internationalization)和本地化(l10n,...
Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。Django的官方文档通常包含了框架的所有相关信息,包括如何安装、配置以及如何使用其各种功能来构建一个功能完备的Web应用。 1. Django框架...
6. **中间件**:中间件是Django中的一个独特概念,它提供了一种全局处理请求和响应的方法。中间件可以用于记录日志、处理会话、执行认证和授权等。 7. **用户认证与权限**:Django内置了用户认证系统,包括注册、...
3. **Django调试工具**:集成pdb或其它调试工具,便于在Atom中调试Django应用。 4. **项目管理工具**:用于快速启动、停止、迁移Django项目的服务。 5. **Git命令集成**:简化版本控制操作,如提交、推送、拉取等。 ...
- **模板标签和过滤器**:自定义模板标签和过滤器可以扩展模板功能。 ##### 4. 表单处理 - **表单类定义**:使用表单类定义数据验证规则。 - **表单处理流程**:从用户输入获取数据,验证数据有效性,保存数据到...
【标题】"基于python+Django的OA办公系统"是一个典型的Web应用程序开发项目,它结合了Python编程语言和Django框架来构建一个办公自动化(OA)系统。在计算机科学领域,OA系统通常用于提高组织的工作效率,实现无纸化...
- **自定义模板标签与过滤器**:丰富模板功能,增加动态效果。 - **编写自定义存储系统**:替代默认的文件存储方式,提供更多选择。 - **部署 Django**:介绍常见的部署方案,包括服务器配置、负载均衡等。 - **错误...
"毕业设计论文"标签意味着Django 3.2.25可能被用作毕业设计的基础,学生可以用它来构建一个完整的Web应用,展示他们在Web开发课程中学到的技能。Django的全面性使其成为构建复杂系统的理想选择,可以处理数据库管理...