跳转到主要内容

一组可配置的面板,用于显示当前请求/响应的各种调试信息。版本完全兼容Django 1.3

项目描述

Django调试工具栏是一组可配置的面板,用于显示当前请求/响应的各种调试信息。点击时,会显示有关面板内容的更多详细信息。

目前,以下面板已被编写并工作

  • Django版本

  • 请求计时器

  • settings.py中的设置列表

  • 常见的HTTP头

  • GET/POST/cookie/session变量显示

  • 使用的模板和上下文及其模板路径

  • SQL查询包括执行时间和每个查询的EXPLAIN链接

  • 信号列表、它们的参数和接收者

  • 通过Python的内置日志模块进行日志输出

目前还有一个Django管理命令

  • debugsqlshell:在Python交互式shell中工作时输出执行的SQL。(见下例)

如果您有其他面板的想法,请告诉我们。

安装

  1. debug_toolbar目录添加到Python路径中。

  2. 将以下中间件添加到项目的settings.py文件中

    'debug_toolbar.middleware.DebugToolbarMiddleware',

    将中间件与中间件相关联允许每个面板在请求时实例化,并在响应时渲染。

    MIDDLEWARE_CLASSES的顺序很重要:调试工具栏中间件必须在任何其他编码响应内容的中间件之后(如GZipMiddleware)。

    注意:调试工具栏仅在响应的mimetype为text/htmlapplication/xhtml+xml并且包含一个关闭的</body>标签时显示。

    注意:请注意中间件顺序和其他可能拦截请求并返回响应的中间件。例如,将调试工具栏中间件放在Flatpage中间件之后,意味着工具栏不会显示在flatpages上。

  3. 确保您的IP已列在INTERNAL_IPS设置中。如果您在本地工作,这将

    INTERNAL_IPS = ('127.0.0.1',)

    注意:这是由于内置的 show_toolbar 方法的要求。有关如何定义一个方法以确定显示工具栏的自定义逻辑,请参阅下文。

  4. debug_toolbar添加到您的INSTALLED_APPS设置中,以便Django可以找到与调试工具栏关联的模板文件。

    或者,将调试工具栏模板的路径(《path/to/debug_toolbar/templates》)添加到您的 TEMPLATE_DIRS 设置中。

配置

调试工具栏有两个可以在 settings.py 中设置的设置

  1. 可选:在您的 settings.py 文件中添加一个名为 DEBUG_TOOLBAR_PANELS 的元组,指定您想要包含在工具栏中的面板的完整Python路径。此设置与 MIDDLEWARE_CLASSES 设置非常相似。例如

    DEBUG_TOOLBAR_PANELS = (
        'debug_toolbar.panels.version.VersionDebugPanel',
        'debug_toolbar.panels.timer.TimerDebugPanel',
        'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',
        'debug_toolbar.panels.headers.HeaderDebugPanel',
        'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
        'debug_toolbar.panels.template.TemplateDebugPanel',
        'debug_toolbar.panels.sql.SQLDebugPanel',
        'debug_toolbar.panels.signals.SignalDebugPanel',
        'debug_toolbar.panels.logger.LoggingPanel',
    )

    您可以通过更改此元组的顺序来自定义要显示的面板的顺序,或添加/删除面板。如果您有自定义面板,您可以以这种方式包含它们——只需提供您的面板的完整Python路径即可。

  2. 可选:有几个配置选项可以放在字典中用于调试工具栏

    • INTERCEPT_REDIRECTS:如果设置为True(默认值),则在重定向时调试工具栏将显示一个中间页面,以便在重定向之前查看任何调试信息。此页面将提供一个链接,您可以在准备好时跟踪重定向目标。如果设置为False,重定向将像正常一样进行。

    • SHOW_TOOLBAR_CALLBACK:如果没有设置或设置为None,则debug_toolbar中间件将使用其内置的show_toolbar方法来确定是否应显示工具栏。默认检查是DEBUG必须设置为True,并且请求的IP必须在INTERNAL_IPS中。您可以提供自己的方法来显示工具栏,其中包含您的自定义逻辑。此方法应返回True或False。

    • EXTRA_SIGNALS:一个自定义信号数组,可能存在于您的项目中,定义为信号的Python路径。

    • HIDE_DJANGO_SQL:如果设置为True(默认值),则Django本身的代码不会显示在SQL堆栈跟踪中。

    • SHOW_TEMPLATE_CONTEXT:如果设置为True(默认值),则模板的上下文将包括在模板调试面板中。关闭此功能在您有大型模板上下文或具有您不想评估的懒惰数据结构的模板上下文时很有用。

    • :如果设置,这将是指调试工具栏附加调试工具栏的标签。默认为‘body’。

    示例配置

    def custom_show_toolbar(request):
        return True # Always show toolbar, for example purposes only.
    
    DEBUG_TOOLBAR_CONFIG = {
        'INTERCEPT_REDIRECTS': False,
        'SHOW_TOOLBAR_CALLBACK': custom_show_toolbar,
        'EXTRA_SIGNALS': ['myproject.signals.MySignal'],
        'HIDE_DJANGO_SQL': False,
        'TAG': 'div',
    }

debugsqlshell

以下是从运行 debugsqlshell 管理命令中得到的示例输出。每个导致数据库查询的ORM调用都将以美观的方式在shell中输出。

$ ./manage.py debugsqlshell
Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from page.models import Page
>>> ### Lookup and use resulting in an extra query...
>>> p = Page.objects.get(pk=1)
SELECT "page_page"."id",
       "page_page"."number",
       "page_page"."template_id",
       "page_page"."description"
FROM "page_page"
WHERE "page_page"."id" = 1

>>> print p.template.name
SELECT "page_template"."id",
       "page_template"."name",
       "page_template"."description"
FROM "page_template"
WHERE "page_template"."id" = 1

Home
>>> ### Using select_related to avoid 2nd database call...
>>> p = Page.objects.select_related('template').get(pk=1)
SELECT "page_page"."id",
       "page_page"."number",
       "page_page"."template_id",
       "page_page"."description",
       "page_template"."id",
       "page_template"."name",
       "page_template"."description"
FROM "page_page"
INNER JOIN "page_template" ON ("page_page"."template_id" = "page_template"."id")
WHERE "page_page"."id" = 1

>>> print p.template.name
Home

待办事项和错误

请参阅:http://github.com/robhudson/django-debug-toolbar/issues

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

django-debug-toolbar-django13-0.8.4.tar.gz (81.7 kB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面