Docs 菜单
Docs 主页
/ / /
Django MongoDB后端
/

创建应用程序

quickstart项目中,您可以创建一个名为 sample_mflix 的应用程序,用于与Atlas示例数据库交互。 此数据库包含一个 movies集合,其中存储有关电影的信息。 该数据库还包含一个 users集合,其中存储了使用流媒体服务的电影观众的信息。

sample_mflix要学习;了解有关 数据库的详情,请参阅Atlas文档中的 样本 Mflix 数据集。

1

从项目的根目录运行以下命令,根据自定义模板创建一个名为 sample_mflix 的新 Django应用:

python manage.py startapp sample_mflix --template https://github.com/mongodb-labs/django-mongodb-app/archive/refs/heads/5.2.x.zip

注意

应用模板

django-mongodb-app 模板可确保您的 app.py文件包含 "default_auto_field = 'django_mongodb_backend.fields.ObjectIdAutoField'" 行。

2

打开 sample_mflix目录中的 models.py文件,并将其内容替换为以下代码:

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

Movie 模型表示 sample_mflix.movies集合并存储有关电影的信息。 此模型包含一个名为 awards 的嵌入式模型字段,其中存储一个 Award对象。 该模型还包含一个名为 genres 的大量字段,其中存储了描述电影的类型列表。

Award 模型不代表单独的集合。 相反,它表示存储在 Movie 模型中的嵌入式文档值。

Viewer 模型表示 sample_mflix.users集合并存储电影观众的帐户信息。

3

打开 sample_mflix目录中的 views.py文件,并将其内容替换为以下代码:

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})

这些视图显示登陆页面消息以及有关 MovieViewer 模型的信息。

4

sample_mflix目录中创建一个名为 urls.py文件的新文件。 要将上一步中定义的视图映射到 URL,请将以下代码粘贴到 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"),
]

然后,导航到 quickstart/urls.py文件并将其内容替换为以下代码:

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

sample_mflix目录中,创建一个名为 templates 的子目录。 然后,创建一个名为 recent_movies.html 的文件并粘贴以下代码:

<!-- 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>

该模板格式化 recent_movies 视图请求的电影数据。

sample_mflix/templates目录中创建另一个名为 viewers_list.html 的文件,然后粘贴以下代码:

<!-- 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>

该模板用于格式化 viewers_list 视图请求的用户数据。

6

quickstart 中打开 settings.py文件,并编辑 INSTALLED_APPS 设置以类似于以下代码:

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

从项目根目录运行以下命令,为 MovieAwardViewer 模型创建迁移,并将更改应用到数据库:

python manage.py makemigrations sample_mflix
python manage.py migrate

完成这些步骤后,您就拥有了一个基本的 Django MongoDB后端应用,可用于访问权限sample_mflix Atlas数据库。

后退

配置MongoDB连接