アプリケーションの作成
quickstart
プロジェクトには、sample_mflix
という Atlasサンプルデータベースを操作するアプリケーションを作成できます。 このデータベースには、映画に関する情報を保存する movies
コレクションが含まれています。 データベースには、ストリーミングサービスを使用する映画の投票者に関する情報が保存される users
コレクションも含まれています。
データベースの詳細については、Atlas ドキュメントのsample_mflix
Mflix サンプル データセット を参照してください。
「sample_mflix」アプリの作成
プロジェクトの ルートディレクトリから、次のコマンドを実行して、カスタム テンプレートに基づいて 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'"
という行が含まれるようになります。
映画、賞、データビューアのモデルを作成する
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
コレクションを表し、映画閲覧者のアカウント情報を保存します。
データを表示するためのビューを作成
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
モデルに関する情報が表示されます。
ビューの URL を設定する
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")), ]
データ形式のテンプレートを作成
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
ビューによってリクエストされたユーザー データを形式します。
アプリをプロジェクトに含める
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', ]
これらの手順を完了すると、sample_mflix
Atlas データベース にアクセスするために使用できる基本的な Diango MongoDBバックエンドアプリが作成されます。