帮助django开发的小型实用工具工具箱
django-debugtools的Python项目详细描述
简介
debugtools模块提供一些易于使用的调试实用程序来帮助django开发。 它的功能:
- 打印上下文的模板标记。
- 一个XViewMiddleware变体,用于查看用于呈现页面的视图和模板。
- 用于django-debug-toolbar显示用于呈现页面的view和template的面板。
- jquerydebug()函数。
安装
首先安装模块,最好是在虚拟环境中。它可以从pypi安装:
pip install django-debugtools
或者可以安装当前文件夹:
pip install .
配置
将模块添加到已安装的应用程序:
INSTALLED_APPS += ( 'debugtools', )
从django 1.9开始,使用{% load debugtools_tags %}或将以下内容添加到设置中:
TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[],'APP_DIRS':True,'OPTIONS':{'context_processors':['django.template.context_processors.debug','django.template.context_processors.request',# ...],'builtins':[# Add this section"debugtools.templatetags.debugtools_tags",# Add this line],},},]
或者,当您使用local.py设置文件时:
TEMPLATES[0]['OPTIONS']['builtins']+=["debugtools.templatetags.debugtools_tags",# enables {% print %}]
功能
打印模板标记
在django模板中,可以使用以下代码:
{% print variable1 variable2 %}
如果出现{% print original %}:
当没有给定变量(例如{% print %})时,将显示所有上下文变量:
模板上下文变量以自定义的pprint.pformat格式打印,以便于阅读。 注意不需要{% load %}标记;将{% print %}函数添加到模板内置函数中,以便于调试。
打印查询模板标记
为了方便起见,还有一个{% print_queries %}标记, 基于http://djangosnippets.org/snippets/93/
要进行更复杂的调试,您可能需要为此作业使用django调试工具栏。
调试工具栏面板
将以下设置添加到django-debug-toolbar配置:
DEBUG_TOOLBAR_PANELS = ( 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 'debugtools.panels.ViewPanel', # Add this one 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.RedirectsPanel', )
jquery调试打印
在页面中添加以下内容:
<script type="text/javascript" src="{{ STATIC_URL }}debugtools/jquery.debug.js"></script>
现在您可以将jquery选择器上下文打印到控制台:
$("#foo").children('li').debug().addClass('bar');
这将在控制台中打印与当前jquery选择器匹配的<li>元素。 可选地,前缀可以包含在debug()调用中:
$("#foo").debug("at baz: ").addClass('bar');
x-view中间件
除了django-debug-toolbar面板之外,还可以添加XViewMiddleware。 添加以下设置:
INTERNAL_IPS = ( '127.0.0.1', ) MIDDLEWARE_CLASSES += ( 'debugtools.middleware.XViewMiddleware', )
来自内部IP的所有请求,或由管理员用户发出的所有请求都将有一个X-View头和X-View-Template头。 在Firebug控制台或Chrome Web Inspector中,您可以看到哪个视图和模板处理了当前请求:
如果视图允许用不同的名称覆盖模板,则还会显示其他模板。
打印标签示例
例如,当使用以下代码时:
{% print original %} {% print inline_admin_formset %} {% for inline_admin_form in inline_admin_formset %} {% print inline_admin_form %} {% print inline_admin_form.form.name %} {% endfor %}
它打印上下文值,这有助于了解模板上下文:
这使得理解代码提供给模板的内容更加容易。