Overview
在本教程中,您可以学习如何在 Django 项目中使用 Django MongoDB Extensions 中的 Django Debug Toolbar。
Django MongoDB Extensions 是一个包,其中包含 Django MongoDB 后端的其他开发者工具。本教程展示如何配置 Django MongoDB Extensions 中的 MongoDB 查询语言 (MQL) 面板以供 Django Debug Toolbar 使用。此面板显示应用程序在请求期间运行的 MQL 查询,并显示执行时间和查询计划。
先决条件
在开始本教程之前,请完成以下先决任务:
创建一个使用 Django MongoDB后端的 Django项目。要创建项目,请参阅 Django MongoDB后端入门教程。
在项目中安装并配置 Django 调试工具栏。要查看说明,请参阅 安装 Django 调试工具栏文档中的。
Tutorial
以下步骤向您展示如何安装 Django MongoDB扩展、配置MQL面板以及在 Django 调试工具栏中查看MongoDB查询。
注册MQL面板。
默认下,Django 调试工具栏无需 DEBUG_TOOLBAR_PANELS 设置即可运行。但是,由于MongoDB不使用SQL,因此MongoDB应用程序最常见的配置是将SQL面板替换为MQL面板。将以下设置添加到 settings.py文件,将 DEBUG_TOOLBAR_PANELS 设置为默认值,但将 SQLPanel 替换为 MQLPanel:
DEBUG_TOOLBAR_PANELS = [ 'debug_toolbar.panels.history.HistoryPanel', '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', 'django_mongodb_extensions.mql_panel.MQLPanel', 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.alerts.AlertsPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.community.CommunityPanel', 'debug_toolbar.panels.redirects.RedirectsPanel', 'debug_toolbar.panels.profiling.ProfilingPanel', ]
查看 sample_mflix.movies 查询信息。
如果您为在 Django MongoDB后端入门 教程中创建的应用程序配置 Django MongoDB扩展,则可以导航到 http://127.0.0.1:8000/recent_movies/ 以查看在请求期间执行的MongoDB查询。
Django 调试工具栏显示在页面右侧。选择 MQL 标签以查看用于显示最近电影的MongoDB查询,该查询类似于以下代码:
db.movies.aggregate([{'$addFields': {'released': '$released'}}, {'$sort': SON([('released', -1)])}, {'$limit': 5}])
然后,您可以通过单击以下按钮来浏览查询信息:
选择查询左侧的 + 按钮以查看回溯,它类似于以下代码:
/path/to/site-packages/django/contrib/staticfiles/handlers.py in __call__(80) return self.application(environ, start_response) /path/to/djangoquickstart/sample_mflix/views.py in recent_movies(11) return render(request, "recent_movies.html", {"movies": movies}) /path/to/site-packages/django/shortcuts.py in render(25) content = loader.render_to_string(template_name, context, request, using=using) ... 在 ACTION 列中选择查询右侧的 Query 按钮,查看美观打印的MQL。此MQL类似于以下代码:
db.movies.aggregate( [ { "$addFields": { "released": "$released" } }, { "$sort": { "released": -1 } }, { "$limit": 5 } ] ) 在 ACTION 列中选择查询右侧的 Explain 按钮,查看查询的解释计划。该计划类似于以下代码:
{ "explainVersion": "1", "stages": [ { "$cursor": { "queryPlanner": { ... }, "executionStats": { ... } }, "nReturned": 21351, "executionTimeMillisEstimate": 59 }, { "$addFields": { "released": "$released" }, "nReturned": 21351, "executionTimeMillisEstimate": 70 }, { "$sort": { "sortKey": { "released": -1 }, "limit": 5 }, ... } ], ... }
后续步骤
恭喜完成 Django Debug Toolbar 教程!您现在拥有一个 Django 应用程序,可使用 Django MongoDB Extensions 在 Django Debug Toolbar 中查看和分析 MongoDB 查询。
要了解有关 Django MongoDB Extensions 包的更多信息,请参阅 PyPI 上的 django-mongodb-extensions 和 GitHub 上的 django-mongodb-extensions 存储库。
如需学习;了解如何查询数据,请参阅“指定查询”指南。