Docs Menu
Docs Home
/ / /
Diango MongoDBバックエンド
/

アプリケーションの作成

quickstartプロジェクトには、sample_mflix という Atlasサンプルデータベースを操作するアプリケーションを作成できます。 このデータベースには、映画に関する情報を保存する moviesコレクションが含まれています。 データベースには、ストリーミングサービスを使用する映画の投票者に関する情報が保存される usersコレクションも含まれています。

データベースの詳細については、Atlas ドキュメントのsample_mflix Mflix サンプル データセット を参照してください。

1

プロジェクトの ルートディレクトリから、次のコマンドを実行して、カスタム テンプレートに基づいて sample_mflix という新しい Dmangoアプリを作成します。

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

これらのビューには、ランディング ページ メッセージと、Movie および Viewer モデルに関する情報が表示されます。

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

quickstartsettings.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

これらの手順を完了すると、sample_mflix Atlas データベース にアクセスするために使用できる基本的な Diango MongoDBバックエンドアプリが作成されます。

戻る

MongoDB接続の構成