En tu quickstart En el proyecto, 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. 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.
Crear modelos para datos de películas, premios y espectadores
Abra el archivo models.py en el directorio sample_mflix y reemplace 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 matriz 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.
Crear vistas para mostrar datos
Abra el archivo views.py en su directorio sample_mflix y reemplace su contenido con 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 destino e información sobre sus modelos Movie y Viewer.
Configurar URL para sus vistas
Cree un nuevo archivo llamado urls.py en su directorio sample_mflix. Para asignar las vistas definidas en el paso anterior a URL, pegue 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 hasta el 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")), ]
Crea plantillas para dar formato a tus datos
En el directorio sample_mflix, crea un subdirectorio llamado templates. Luego, crea un archivo llamado recent_movies.html y pega 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 formatea los datos de usuario solicitados por la vista viewers_list.
Incluye tu aplicación en tu proyecto
Abra el archivo settings.py en quickstart y edite su 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', ]
Después de completar estos pasos, tendrá una aplicación básica Django MongoDB Backend que puede usar para acceder a la base de datos Atlas sample_mflix.