Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Empieza con Django MongoDB Backend

Django MongoDB Backend es un backend de base de datos de Django que utiliza PyMongo para conectarse a MongoDB. Este tutorial muestra cómo crear una aplicación de Django, conectarse a un clúster de MongoDB alojado en MongoDB Atlas e interactuar con los datos de su clúster.

Tip

MongoDB Atlas es un servicio de base de datos gestionada en la nube que aloja las implementaciones de MongoDB. Se puede crear una implementación propia gratuita de MongoDB Atlas (sin necesidad de tarjeta de crédito) siguiendo los pasos de esta guía.

Sigue este tutorial para conectar una aplicación de muestra de Django a una implementación de MongoDB Atlas.

Completa los siguientes pasos para instalar el Backend de Django MongoDB y sus dependencias en tu entorno de desarrollo.

1

Antes de instalar Django MongoDB Backend, asegúrese de tener Python 3.10 o posterior instalado en su entorno de desarrollo.

2

Seleccione la pestaña correspondiente a su sistema operativo y ejecute los siguientes comandos para crear y activar un entorno virtual en el que instalar Django MongoDB Backend:

python -m venv venv
source venv/bin/activate
python -m venv venv
. venv\Scripts\activate

Tip

En los comandos anteriores, es posible que debas reemplazar python con el comando que apunta a tu intérprete de Python 3.10+ .

3

Con el entorno virtual activado, ejecuta el siguiente comando para instalar la integración de Django:

pip install django-mongodb-backend

Este comando también instala las versiones más recientes de las siguientes dependencias:

  • PyMongo 4.x

  • Django 6.0.x

Se puede crear una implementación de nivel gratuito de MongoDB en MongoDB Atlas para almacenar y gestionar los datos. MongoDB Atlas aloja y gestiona la base de datos MongoDB en la nube.

1

Completa los pasos en Cómo empezar con Atlas para configurar una nueva cuenta de Atlas y una implementación MongoDB en el nivel gratuito. Asegúrate de cargar datos de muestra y añadir tu dirección IP a la lista de acceso IP.

2

Después de crear un usuario de base de datos, guardar el nombre de usuario y la contraseña de ese usuario en una ubicación segura para usarlos en un paso próximo.

Puede conectarse a su implementación de MongoDB proporcionando un URI de conexión, también llamado cadena de conexión, que instruye al controlador sobre cómo conectarse a una implementación de MongoDB y cómo comportarse mientras está conectado.

La cadena de conexión incluye el nombre de host o la dirección IP y el puerto de la implementación, el mecanismo de autenticación, las credenciales de usuario cuando sea aplicable, y las opciones de conexión.

1

Para recuperar tu cadena de conexión para la implementación que creaste en el paso anterior, inicia sesión en tu cuenta de Atlas y navega hasta Clusters sección y haz clic en el botón Connect para tu nueva implementación.

El botón de conexión en la sección de clústeres de la interfaz de usuario de Atlas

Diríjase a la sección Connect your application y seleccione "Python" del menú de selección Driver y la versión que mejor coincida con la versión que instaló del menú de selección Version.

2

Se debe hacer clic en el botón a la derecha de la cadena de conexión para copiarla al portapapeles, como se muestra en la siguiente captura de pantalla:

El botón de copia de la cadena de conexión en la Interfaz de Usuario de Atlas
3

Pega tu cadena de conexión en un archivo en tu editor de texto preferido y guarda este archivo en una ubicación segura para su uso posterior. Tu cadena de conexión se parece al siguiente ejemplo:

mongodb+srv://<db_username>:<db_password>@samplecluster.ojeyz.mongodb.net/?retryWrites=true&w=majority&appName=SampleCluster

Reemplaza los marcadores de posición <db_username> y <db_password> por el nombre de usuario y la contraseña de tu usuario de base de datos.

Después de instalar Django MongoDB Backend y crear un clúster MongoDB Atlas, puede crear un proyecto Django que se conecte a MongoDB.

1

Desde tu shell, ejecuta el siguiente comando para crear un nuevo proyecto de Django llamado quickstart basado en una plantilla personalizada:

django-admin startproject quickstart --template https://github.com/mongodb-labs/django-mongodb-project/archive/refs/heads/6.0.x.zip

Nota

Plantilla de proyecto

La plantilla django-mongodb-project se parece a la plantilla de proyecto por defecto de Django pero realiza los siguientes cambios:

  • Incluye migraciones específicas de MongoDB

  • Modifica el archivo settings.py para indicarle a Django que use un valor ObjectId como clave principal de cada modelo

Después de ejecutar este comando, tu proyecto quickstart tiene la siguiente estructura de archivos:

quickstart/
manage.py
mongo_migrations/
__init__.py
contenttypes/
auth/
admin/
quickstart/
__init__.py
apps.py
settings.py
urls.py
asgi.py
wsgi.py
2

Abra su archivo settings.py y navegue hasta la configuración DATABASES. Reemplace esta configuración con el siguiente código:

DATABASES = {
"default": {
"ENGINE": "django_mongodb_backend",
"HOST": "<connection string URI>",
"NAME": "sample_mflix",
},
}

Reemplace <connection string URI> el marcador de posición con la cadena de conexión que copió del paso Crear una cadena de conexión de esta guía de Introducción.

Esto configura su aplicación Django para conectarse a su clúster Atlas y acceder a la base de datos de muestra sample_mflix.

3

Para verificar que instalaste Django MongoDB Backend y configuraste correctamente tu proyecto, ejecuta el siguiente comando desde la raíz del proyecto:

python manage.py runserver

Luego, visitá http://127.0.0.1:8000/. Esta página muestra un mensaje de “¡Felicidades!” y una imagen de un cohete.

En su proyecto quickstart, puede crear una aplicación que interactúe con la base de datos de ejemplo de Atlas llamada sample_mflix. Esta base de datos contiene una colección movies que almacena información sobre películas. La base de datos también contiene una colección users que almacena información sobre los espectadores de películas que usan un servicio de streaming.

Para obtener más información sobre la base de datos sample_mflix, consulte Conjunto de datos de muestra de Mflix en la documentación de Atlas.

1

Desde el directorio raíz de tu proyecto, ejecuta el siguiente comando para crear una nueva aplicación Django llamada sample_mflix basada en una plantilla personalizada:

python manage.py startapp sample_mflix
2

Abre el archivo models.py en el directorio sample_mflix y reemplaza su contenido con el siguiente código:

from django.db import models
from django.conf import settings
from django_mongodb_backend.fields import EmbeddedModelField, ArrayField
from django_mongodb_backend.models import EmbeddedModel
class Award(EmbeddedModel):
wins = models.IntegerField(default=0)
nominations = models.IntegerField(default=0)
text = models.CharField(max_length=100)
class Movie(models.Model):
title = models.CharField(max_length=200)
plot = models.TextField(blank=True)
runtime = models.IntegerField(default=0)
released = models.DateTimeField("release date", null=True, blank=True)
awards = EmbeddedModelField(Award, null=True, blank=True)
genres = ArrayField(models.CharField(max_length=100), null=True, blank=True)
class Meta:
db_table = "movies"
managed = False
def __str__(self):
return self.title
class Viewer(models.Model):
name = models.CharField(max_length=100)
email = models.CharField(max_length=200)
class Meta:
db_table = "users"
managed = False
def __str__(self):
return self.name

El modelo Movie representa la colección sample_mflix.movies y almacena información sobre películas. Este modelo contiene un campo de modelo incrustado llamado awards, que almacena un objeto Award. El modelo también contiene un campo de arreglo llamado genres, que almacena una lista de géneros que describen la película.

El modelo Award no representa una colección independiente. En su lugar, representa los valores del documento incrustado almacenados en el modelo Movie.

El modelo Viewer representa la colección sample_mflix.users y almacena información de cuentas para los espectadores de películas.

3

Abre el archivo views.py en tu directorio sample_mflix y reemplaza su contenido por el siguiente código:

from django.http import HttpResponse
from django.shortcuts import render
from .models import Movie, Viewer
def index(request):
return HttpResponse("Hello, world. You're at the application index.")
def recent_movies(request):
movies = Movie.objects.order_by("-released")[:5]
return render(request, "recent_movies.html", {"movies": movies})
def viewers_list(request):
viewers = Viewer.objects.order_by("name")[:10]
return render(request, "viewers_list.html", {"viewers": viewers})

Estas vistas muestran un mensaje de página de inicio e información sobre tus modelos Movie y Viewer.

4

Crea un nuevo archivo llamado urls.py en tu directorio sample_mflix. Para mapear las vistas definidas en el paso anterior a URLs, pega el siguiente código en urls.py:

from django.urls import path
from . import views
urlpatterns = [
path("recent_movies/", views.recent_movies, name="recent_movies"),
path("viewers_list/", views.viewers_list, name="viewers_list"),
path("", views.index, name="index"),
]

Luego, navegue al archivo quickstart/urls.py y reemplace su contenido con el siguiente código:

from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("sample_mflix.urls")),
]
5

En tu directorio sample_mflix, crea un subdirectorio denominado templates. Luego, crea un archivo llamado recent_movies.html y pegue el siguiente código:

<!-- templates/recent_movies.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Recent Movies</title>
</head>
<body>
<h1>Five Most Recent Movies</h1>
<ul>
{% for movie in movies %}
<li>
<strong>{{ movie.title }}</strong> (Released: {{ movie.released }})
</li>
{% empty %}
<li>No movies found.</li>
{% endfor %}
</ul>
</body>
</html>

Esta plantilla formatea los datos de película solicitados por la vista recent_movies.

Crea otro archivo en el directorio sample_mflix/templates llamado viewers_list.html y pega el siguiente código:

<!-- templates/viewers_list.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Viewers List</title>
</head>
<body>
<h1>Alphabetical Viewers List</h1>
<table>
<thead>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
{% for viewer in viewers %}
<tr>
<td>{{ viewer.name }}</td>
<td>{{ viewer.email }}</td>
</tr>
{% empty %}
<tr>
<td colspan="2">No viewer found.</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>

Esta plantilla le da formato a los datos de usuario solicitados por la vista viewers_list.

6

Abre el archivo settings.py en quickstart y edita tu configuración INSTALLED_APPS para que se parezca al siguiente código:

INSTALLED_APPS = [
'sample_mflix.apps.SampleMflixConfig',
'quickstart.apps.MongoAdminConfig',
'quickstart.apps.MongoAuthConfig',
'quickstart.apps.MongoContentTypesConfig',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
7

Desde la raíz del proyecto, ejecuta el siguiente comando para crear migraciones para los modelos Movie, Award y Viewer, y aplicar los cambios a la base de datos:

python manage.py makemigrations sample_mflix
python manage.py migrate

Puede utilizar los modelos de su aplicación para actualizar los documentos almacenados en la base de datos sample_mflix. Para actualizar documentos, ingresa a la Python interactive shell y borra las funciones de crear, actualizar y borrar en tus objetos modelo.

1

Desde el directorio raíz de su proyecto, ejecute el siguiente comando para entrar en el shell de Python:

python manage.py shell
2

Desde su shell de Python, ejecute el siguiente código para importar sus modelos y el módulo para crear un objeto datetime:

from sample_mflix.models import Movie, Award, Viewer
from django.utils import timezone
from datetime import datetime
3

Ejecute el siguiente c\u00f3digo para crear un objeto Movie que almacene datos sobre una pel\u00edcula titulada "Minari", incluidos sus premios en un objeto Award:

movie_awards = Award(wins=122, nominations=245, text="Won 1 Oscar")
movie = Movie.objects.create(
title="Minari",
plot="A Korean-American family moves to an Arkansas farm in search of their own American Dream",
runtime=217,
released=timezone.make_aware(datetime(2020, 1, 26)),
awards=movie_awards,
genres=["Drama", "Comedy"]
)
4

El objeto Movie creado en el paso anterior tiene datos inexactos: El valor runtime es 217, pero el valor correcto de runtime es 117.

Ejecutar el siguiente código para actualizar el valor runtime del objeto:

movie.runtime = 117
movie.save()
5

También puedes utilizar tu modelo Viewer para insertar documentos en la colección sample_mflix.users. Ejecuta el siguiente código para crear un objeto Viewer que almacene datos sobre un espectador de películas llamado "Abigail Carter":

viewer = Viewer.objects.create(
name="Abigail Carter",
email="abigail.carter@fakegmail.com"
)
6

Un visor de películas llamado "Alliser Thorne" ya no usa el sitio de streaming. Para eliminar el documento correspondiente de la base de datos, ejecute el siguiente código:

old_viewer = Viewer.objects.filter(name="Alliser Thorne").first()
old_viewer.delete()
7

Sal del shell de Python ejecutando el siguiente código:

exit()

Luego, inicia tu servidor ejecutando el siguiente comando desde el directorio raíz de tu proyecto:

python manage.py runserver
8

Para garantizar que se insertó un objeto Movie en la base de datos, visita el http://127.0.0.1:8000/recent_movies/ URL. Puedes ver una lista de cinco películas en la base de datos sample_mflix.movies, con tu nueva película en la parte superior.

Asegúrate de haber insertado un objeto Viewer en la base de datos visitando el http://127.0.0.1:8000/viewers_list/ URL. Puedes ver una lista de diez nombres de espectadores en la base de datos sample_mflix.users, con tu nuevo espectador en la parte superior de la lista. Asegúrese de que el espectador llamado "Alliser Thorne", eliminado en un paso anterior, no aparezca en esta lista.

Puedes importar tus modelos en la shell interactiva de Python para leer datos de la base de datos sample_mflix.

1

Inicie un shell de Python ejecutando el siguiente comando:

python manage.py shell

Luego, ejecuta el siguiente código para query la colección sample_mflix.users en busca de un espectador de películas cuyo correo electrónico sea "jason_momoa@gameofthron.es":

from sample_mflix.models import Movie, Viewer
Viewer.objects.filter(email="jason_momoa@gameofthron.es").first()

Este código devuelve el nombre del usuario coincidente:

<Viewer: Khal Drogo>
2

Ejecute el siguiente código para consultar la colección sample_mflix.movies en busca de películas que tengan un valor runtime menor que 10:

Movie.objects.filter(runtime__lt=10)

Este código devuelve una lista truncada de las películas coincidentes:

<QuerySet [<Movie: Winsor McCay, the Famous Cartoonist of the N.Y.
Herald and His Moving Comics>, <Movie: Steamboat Willie>, <Movie:
Three Little Pigs>, <Movie: The Band Concert>, <Movie: Who Killed Cock Robin?>,
<Movie: Dots>, <Movie: The Cat Concerto>, <Movie: Begone Dull Care>,
<Movie: Mi adorado Juan>, <Movie: Neighbours>, <Movie: A Phantasy>,
<Movie: Duck Amuck>, <Movie: Duck Dodgers in the 24èth Century>,
<Movie: Blinkity Blank>, <Movie: One Froggy Evening>,
<Movie: What's Opera, Doc?>, <Movie: Lines: Horizontal>,
<Movie: Il fornaretto di Venezia>, <Movie: Dog Star Man: Part IV>,
<Movie: Now>, '...(remaining elements truncated)...']>

Puedes crear un sitio de administración de Django para editar los datos de tu aplicación desde una interfaz web. Para aprender más sobre el sitio de administración de Django y sus funcionalidades, consulte El sitio de administración de Django en la documentación de Django.

1

Antes de crear un sitio de administración, debe crear un usuario que pueda iniciar sesión en el sitio.

Desde el directorio raíz de su proyecto, ejecute el siguiente comando para crear un usuario administrador:

python manage.py createsuperuser

A continuación, tu terminal te solicita un nombre de usuario, dirección de correo electrónico y contraseña. Para cada solicitud, introduce la siguiente información para crear un usuario con las credenciales especificadas y presiona "enter" después de cada entrada:

Username: admin
Email address: admin@example.com
Password: <admin-password>
Password (again): <admin-password>

Reemplaza el marcador de posición <admin-password> por la contraseña de tu usuario.

2

Ejecute el siguiente código para iniciar su servidor:

python manage.py runserver

Una vez que el servidor esté en funcionamiento, visita el http://127.0.0.1:8000/admin/ URL para ver el sitio de administración. Este sitio muestra la siguiente pantalla de inicio de sesión:

La pantalla de inicio de sesión en la página de administración de Django.

Ingresa el nombre de usuario y la contraseña creados en el paso anterior para iniciar sesión en el sitio.

3

Después de iniciar sesión en el sitio de administración, puede ver la siguiente información:

El contenido inicial mostrado en el sitio de administración de Django.

Puedes editar la configuración de autenticación de tu proyecto seleccionando la fila Groups o Users en la tabla Authentication and Authorization.

Para editar los datos en la users colección de muestras, representados por tu modelo Viewer, navega hasta el archivo sample_mflix/admin.py de tu proyecto y pega el siguiente código:

from django.contrib import admin
from .models import Viewer
admin.site.register(Viewer)

Ahora, tu sitio de administrador muestra la siguiente información:

El contenido mostrado en el sitio de administración de Django después de registrar un modelo.
4

Puedes visualizar los datos almacenados en un objeto Viewer que tiene un valor name de "Abigail Carter". Creaste este objeto en el paso Escribir datos en MongoDB de este tutorial.

Haz clic en la fila Viewers de la tabla SAMPLE_MFLIX para ver una lista de visualizadores. El sitio de administración muestra la siguiente lista:

La lista de visualizadores mostrada en el sitio de administración.

Luego, haga clic en Abigail Carter en la parte superior de la lista. El sitio muestra los Name y Email del espectador seleccionado:

La información de tu visualizador seleccionado.
5

Para editar el campo email del visor, selecciona la casilla que contiene el texto "abigail.carter@fakegmail.com". Borra este texto y reemplázalo por "acarter1@fakegmail.com", como se muestra en la siguiente imagen:

La dirección de email actualizada de tu visualizador.

Luego, haz clic en el botón SAVE debajo de la información del visor para guardar tus cambios.

¡Felicitaciones por completar el tutorial de Django MongoDB Backend!

En este tutorial, creaste una aplicación Django que se conecta a una implementación de MongoDB alojada en MongoDB Atlas e interactúa con datos.

Aprende más sobre Django MongoDB Backend a partir de los siguientes recursos:

Volver

Overview

En esta página