Overview
En este tutorial, puedes aprender a utilizar el paquete Django MongoDB Extensions en tu proyecto Django.
Django MongoDB Extensions es un paquete que amplía el backend de Django MongoDB con herramientas para desarrolladores. Este tutorial muestra cómo configurar el panel del lenguaje de consulta de MongoDB (MQL) en Django MongoDB Extensions para usarlo con la barra de herramientas de depuración de Django. Este panel muestra las consultas MQL que ejecuta tu aplicación durante una solicitud, con sus tiempos de ejecución y planes de consulta.
Requisitos previos
Antes de comenzar este tutorial, completa las siguientes tareas previas:
Crea un proyecto Django que use Django MongoDB Backend. Para crear un proyecto, consulta el tutorial Comenzar con Django MongoDB Backend.
Instala y configura la Django Debug Toolbar en tu proyecto. Para ver las instrucciones, consulta Instalación en la documentación de la Django Debug Toolbar.
Tutorial
Los siguientes pasos te muestran cómo instalar Django MongoDB Extensions, cómo configurar el panel MQL y cómo ver las consultas de MongoDB en Django Debug Toolbar.
Registra el panel de MQL.
Por defecto, la Barra de herramientas de depuración de Django funciona sin requerir una configuración de DEBUG_TOOLBAR_PANELS. Sin embargo, dado que MongoDB no utiliza SQL, la configuración más común para las aplicaciones de MongoDB es reemplazar el panel SQL con el panel MQL. Añada la siguiente configuración a su archivo settings.py, lo cual establece DEBUG_TOOLBAR_PANELS con valores por defecto pero reemplaza SQLPanel por 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', ]
Tip
Configuraciones opcionales
Para aprender a configurar los ajustes opcionales que personalizan el comportamiento del panel MQL, consulta el README en el repositorio Django MongoDB Extensions en GitHub.
Verifica el panel MQL.
Inicie su servidor de desarrollo ejecutando el siguiente comando:
python manage.py runserver
Navegar a cualquier página de tu aplicación que realice consultas a MongoDB. Abre la Django Debug Toolbar y selecciona el panel MQL para ver las consultas de MongoDB ejecutadas durante la solicitud, incluidos sus tiempos de ejecución y los planes de explicación.
Ver sample_mflix.movies información de consulta.
Si configuras las extensiones Django MongoDB para la aplicación creada en el tutorial Comenzar con el backend de Django MongoDB, puedes navegar a http://127.0.0.1:8000/recent_movies/ para ver las consultas MongoDB ejecutadas durante la solicitud.
La barra de herramientas de depuración de Django aparece en el lado derecho de la página. Selecciona la etiqueta MQL para ver la query de MongoDB utilizada para mostrar las películas recientes, que se asemeja al siguiente código:
db.movies.aggregate([{'$addFields': {'released': '$released'}}, {'$sort': SON([('released', -1)])}, {'$limit': 5}])
Luego, puede explorar la información de la query haciendo clic en los siguientes botones:
Seleccione el botón + a la izquierda de la query para ver el traceback, que se asemeja al siguiente código:
/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) ... Selecciona el botón Query a la derecha de la pregunta, en la columna ACTION, para ver el MQL impreso de forma bonita. Este MQL se asemeja al siguiente código:
db.movies.aggregate( [ { "$addFields": { "released": "$released" } }, { "$sort": { "released": -1 } }, { "$limit": 5 } ] ) Seleccione el botón Explain a la derecha de la consulta, en la columna ACTION, para ver el plan de explicación de la consulta. Este plan se asemeja al siguiente código:
{ "explainVersion": "1", "stages": [ { "$cursor": { "queryPlanner": { ... }, "executionStats": { ... } }, "nReturned": 21351, "executionTimeMillisEstimate": 59 }, { "$addFields": { "released": "$released" }, "nReturned": 21351, "executionTimeMillisEstimate": 70 }, { "$sort": { "sortKey": { "released": -1 }, "limit": 5 }, ... } ], ... }
Próximos pasos
¡Felicitaciones por completar el tutorial de Extensiones de Django MongoDB! Ahora tienes una aplicación de Django que utiliza las Extensiones MongoDB de Django para ver y analizar consultas de MongoDB en la Django Debug Toolbar.
Para obtener más información sobre el paquete Django MongoDB Extensions, consulta django-mongodb-extensions en PyPI y el django-mongodb-extensions repositorio en GitHub.
Para aprender a consultar sus datos, consulte la guía Especificar una query.