Overview
在本教程中,您可以学习;了解如何在 Django项目中使用 Django MongoDB扩展包。
Django MongoDB扩展是一个开发者工具扩展 Django MongoDB后端的包。本教程向您展示如何在 MongoDB MongoDB扩展中配置MongoDB查询语言 (MQL ) 面板,以便与 Django 调试工具栏一起使用。此面板显示应用程序在请求期间运行的MQL查询,以及执行时间和查询计划。
先决条件
在开始本教程之前,请完成以下先决任务:
创建一个使用 Django MongoDB后端的 Django项目。要创建项目,请参阅 Django MongoDB后端入门教程。
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 MongoDB扩展教程!您现在拥有一个 Django应用程序,它使用 Django MongoDB扩展来查看和分析Django 调试工具栏中的MongoDB查询。
要学习;了解有关 Django MongoDB扩展包的更多信息,请参阅 PyPI 上的 django-mongodb-extensions 和 GitHub 上的 django-mongodb-extensions存储库。