Docs Menu
Docs Home
/ /
/ / /

Crear una aplicación

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.

1

Desde el directorio raíz de su proyecto, ejecute 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

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.

3

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.

4

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")),
]
5

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.

6

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',
]
7

Desde la raíz del proyecto, ejecute 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

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.

Volver

Configurar una conexión MongoDB