AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Dpango MongoDBバックエンドを使い始める

Dlango MongoDBバックエンドは、 PyMongo を使用してMongoDBに接続する Dlangoデータベースのバックエンドです。 このチュートリアルでは、 Dpangoアプリの作成、 MongoDB AtlasでホストされているMongoDBクラスターへの接続、 クラスター内のデータとのやり取りの方法を説明します。

Tip

MongoDB Atlas は、MongoDB 配置をホストする完全管理のクラウドデータベース サービスです。このガイドの手順に従い、独自の無料(クレジット カード不要)MongoDB Atlas 配置を作成できます。

このチュートリアルに従って、サンプルDpangoアプリケーションをMongoDB Atlas配置に接続します。

開発環境に Dpango MongoDBバックエンドとその依存関係をインストールするには、次の手順を実行します。

1

Diango MongoDBバックエンドをインストールする前に、開発環境にPython 3.10 以降がインストールされていることを確認してください。

2

オペレーティング システムに対応するタブを選択し、次のコマンドを実行して、Diango MongoDBバックエンドをインストールするための仮想環境を作成およびアクティブ化します。

python -m venv venv
source venv/bin/activate
python -m venv venv
. venv\Scripts\activate

Tip

上記のコマンドでは、python をPython 3.10+ インタープリタを指すコマンドに置き換える必要がある場合があります。

3

仮想環境がアクティブ化されている状態で、次のコマンドを実行して Dpango 統合をインストールします。

pip install django-mongodb-backend

このコマンドは、次の依存関係の最新バージョンもインストールします。

  • PyMongo 4.x

  • Django 5.2.x

MongoDB Atlas では無料階層の MongoDB 配置を作成して、データを保存および管理できます。 MongoDB Atlas は、MongoDB databaseをクラウドでホストおよび管理します。

1

Atlas の使用開始 の手順を完了して、新しい Atlas アカウントと無料階層のMongoDB配置 を設定します。サンプルデータをロードし、IP アクセス リストにIPアドレスを追加していることを確認します。

2

データベースユーザーを作成したら、そのユーザーのユーザー名とパスワードを安全な場所に保存して、後の手順で使用します。

MongoDB配置に接続するには、 接続string とも呼ばれる 接続 URIMongoDB を提供します。これは、 配置に接続する方法と接続中の動作をドライバーに指示します。

接続stringには、配置のホスト名またはIPアドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、および接続オプションが含まれます。

1

前のステップで作成した配置の接続文字列を取得するには、Atlas アカウントにログClusters セクションに移動し、新しい配置の [Connectボタンをクリックします。

Atlas UI のクラスター セクションの接続ボタン

Connect your applicationセクションに進み、 Driver選択メニューから [Python] を選択し、 Version選択メニューからインストールしたバージョンに最適なバージョンを選択します。

2

次のスクリーンショットに示すように、接続stringの右側にある ボタンをクリックして、クリップボードにコピーします。

UI の接続 コピーstring ボタンAtlas
3

接続文字列をテキストエディターのファイルに貼り付け、後で使用するために安全な場所にファイルします。 接続文字列は、次の例のようになります。

mongodb+srv://<db_username>:<db_password>@samplecluster.ojeyz.mongodb.net/?retryWrites=true&w=majority&appName=SampleCluster

<db_username><db_password> のプレースホルダーを、データベースユーザーのユーザー名とパスワードに置き換えます。

Dlango MongoDBバックエンドをインストールし、 MongoDB Atlasクラスターを作成したら、 MongoDBに接続する Dlangoプロジェクトを作成できます。

1

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

django-admin startproject quickstart --template https://github.com/mongodb-labs/django-mongodb-project/archive/refs/heads/5.2.x.zip

注意

プロジェクト テンプレート

django-mongodb-project テンプレートは、デフォルトのDiangoプロジェクトテンプレートに似ていますが、次の変更が行われています。

  • MongoDB固有の移行が含まれます

  • settings.pyファイルを変更して、各モデルのプライマリキーとして ObjectId 値を使用するように Diango に指示します

このコマンドの実行中後、quickstartプロジェクトは次のファイル構造になります。

quickstart/
manage.py
mongo_migrations/
__init__.py
contenttypes/
auth/
admin/
quickstart/
__init__.py
apps.py
settings.py
urls.py
asgi.py
wsgi.py
2

settings.pyファイルを開き、DATABASES 設定に移動します。 この設定を次のコードで置き換えます。

DATABASES = {
"default": {
"ENGINE": "django_mongodb_backend",
"HOST": "<connection string URI>",
"NAME": "sample_mflix",
},
}

<connection string URI> プレースホルダーを、この 接続文字列の作成 ステップからコピーした接続文字列に置き換えます。

これにより、DiangoアプリはAtlas クラスターに接続し、sample_mflixサンプルデータベースにアクセスするように構成されます。

3

Dpango MongoDBバックエンドがインストールされ、プロジェクトが正しく構成された ことを確認するには、プロジェクトルートから次のコマンドを実行します。

python manage.py runserver

次に、http://127.0.0.1:8000/ にアクセスします。このページにはメッセージとロケールのイメージ。

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

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

1

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

python manage.py startapp sample_mflix
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データベースに保存されているドキュメントを更新できます。 ドキュメントをアップデートするには、 Pythonインタラクティブシェルを入力し、モデル オブジェクトの作成、アップデート、削除関数を呼び出します。

1

プロジェクトの ルートディレクトリから、次のコマンドを実行してPython シェルを入力します。

python manage.py shell
2

Python シェルから次のコードを実行して、datetimeオブジェクトを作成するためのモデルとモジュールをインポートします。

from sample_mflix.models import Movie, Award, Viewer
from django.utils import timezone
from datetime import datetime
3

次のコードを実行して、映画「"Minari"」に関するデータを Awardオブジェクトに保存する Movieオブジェクトを作成します。

movie_awards = Award(wins=122, nominations=245, text="Won 1 Oscar")
movie = Movie.objects.create(
title="Minari",
plot="A Korean-American family moves to an Arkansas farm in search of their own American Dream",
runtime=217,
released=timezone.make_aware(datetime(2020, 1, 26)),
awards=movie_awards,
genres=["Drama", "Comedy"]
)
4

前のステップで作成された Movieオブジェクトには不正確なデータがあります。runtime の値は 217 ですが、正しい runtime 値は 117 です。

次のコードを実行して、オブジェクトの runtime 値をアップデートします。

movie.runtime = 117
movie.save()
5

また、Viewer モデルを使用して、 sample_mflix.usersコレクションにドキュメントを挿入することもできます。 次のコードを実行して、"Abigail Carter" という名前の映画閲覧者に関するデータを保存する Viewerオブジェクトを作成します。

viewer = Viewer.objects.create(
name="Abigail Carter",
email="abigail.carter@fakegmail.com"
)
6

「Alliser Twin」という名前の 1 人の映画ビューアが、映画ストリーミングサイトを使用しなくなりました。 このビューアの対応するドキュメントをデータベースから削除するには、次のコードを実行します。

old_viewer = Viewer.objects.filter(name="Alliser Thorne").first()
old_viewer.delete()
7

次のコードを実行中てPython シェルを終了します。

exit()

次に、プロジェクトの ルートディレクトリから次のコマンドを実行中てサーバーを起動します。

python manage.py runserver
8

データベースにMovieオブジェクトを挿入したことを確認するには、http://127.0.0.1:8000/recent_movies/ にアクセスします。URL.sample_mflix.moviesデータベースに 5 つの映画のリストが表示され、新しい映画が上部に表示されます。

次に、http://127.0.0.1:8000/viewers_list/ にアクセスして、データベースに Viewerオブジェクトが挿入されていることを確認します。URL。sample_mflix.usersデータベースには 10 個のビューア名のリストが表示され、新しいビューが上部に表示されます。前の手順で削除された「Alliser Twin」という名前のビューがこのリストに表示されないことを確認します。

Pythonインタラクティブシェルにモデルをインポートして、sample_mflixデータベースからデータを読み取ることができます。

1

以下のコマンドを実行中てPython シェル を起動します。

python manage.py shell

次に、次のコードを実行して、メールが "jason_momoa@gameofthron.es" である映画ビューアの sample_mflix.usersコレクションをクエリします。

from sample_mflix.models import Movie, Viewer
Viewer.objects.filter(email="jason_momoa@gameofthron.es").first()

このコードは、一致するユーザーの名前を返します。

<Viewer: Khal Drogo>
2

次のコードを実行して、sample_mflix.moviesコレクションで runtime の値が 10 より小さい映画をクエリします。

Movie.objects.filter(runtime__lt=10)

このコードは、一致する映画の切り捨てられたリストを返します。

<QuerySet [<Movie: Winsor McCay, the Famous Cartoonist of the N.Y.
Herald and His Moving Comics>, <Movie: Steamboat Willie>, <Movie:
Three Little Pigs>, <Movie: The Band Concert>, <Movie: Who Killed Cock Robin?>,
<Movie: Dots>, <Movie: The Cat Concerto>, <Movie: Begone Dull Care>,
<Movie: Mi adorado Juan>, <Movie: Neighbours>, <Movie: A Phantasy>,
<Movie: Duck Amuck>, <Movie: Duck Dodgers in the 24èth Century>,
<Movie: Blinkity Blank>, <Movie: One Froggy Evening>,
<Movie: What's Opera, Doc?>, <Movie: Lines: Horizontal>,
<Movie: Il fornaretto di Venezia>, <Movie: Dog Star Man: Part IV>,
<Movie: Now>, '...(remaining elements truncated)...']>

Dpango 管理サイトを作成して、ウェブ インターフェイスからアプリケーションのデータを編集できます。Dlango 管理サイトとその機能の詳細については、Diango ドキュメントの「 Diango 管理サイト 」を参照してください。

1

管理サイトを作成する前に、サイトにログできるユーザーを作成する必要があります。

プロジェクトの ルートディレクトリから、次のコマンドを実行して管理者ユーザーを作成します。

python manage.py createsuperuser

次に、ターミナルユーザー名、メールアドレス、パスワードの入力を求められます。 各プロンプトごとに、次の情報を入力して、指定された認証情報を持つユーザーを作成し、各エントリの後に「 Enter 」を押します。

Username: admin
Email address: admin@example.com
Password: <admin-password>
Password (again): <admin-password>

<admin-password> プレースホルダーをユーザーのパスワードに置き換えます。

2

次のコードを実行して、サーバーを起動します。

python manage.py runserver

サーバーがを実行中たら、http://127.0.0.1:8000/admin/ にアクセスします。管理サイトを参照するためのURL 。このサイトでは、次のログイン画面が表示されます。

Dpango 管理ページのログイン画面。

前のステップで作成したユーザー名とパスワードを入力して、サイトにログします。

3

管理サイトにログインすると、次の情報が表示されます。

Dpango 管理サイトに表示される初期コンテンツ。

プロジェクトの認証構成を編集するには、Authentication and Authorization テーブルで Groups 行または Users 行を選択します。

Viewer モデルで表される usersサンプルコレクション内のデータを編集するには、プロジェクトの sample_mflix/admin.pyファイルに移動し、次のコードを貼り付けます。

from django.contrib import admin
from .models import Viewer
admin.site.register(Viewer)

これで、管理サイトに次の情報が表示されます。

モデルを登録した後に Diango 管理サイトに表示されるコンテンツ
4

name 値が "Abigail Carter" である Viewerオブジェクトに保存されているデータを表示できます。このオブジェクトは、このチュートリアルのMongoDBへのデータの書き込みのステップで作成しました。

閲覧者のリストを表示するには、SAMPLE_MFLIX テーブルの Viewers 行をクリックします。 管理サイトには、次のリストが表示されます。

管理サイトに表示されるビューアの一覧。

次に、リストの上部にある [Abigail Carter] をクリックします。 サイトには、選択したビューアの NameEmail が表示されます。

選択したビューアの情報。
5

ビューの emailフィールドを編集するには、テキスト "abigail.carter@fakegmail.com" を含むボックスを選択します。 次の画像に示すように、このテキストを削除し、"acarter1@fakegmail.com" に置き換えます。

ビューアの更新されたメールアドレス。

変更を保存するには、ビューの情報の下にある SAVE ボタンをクリックします。

Dpango MongoDBバックエンドのチュートリアルが完了しました。

このチュートリアルでは、 MongoDB AtlasでホストされているMongoDBデプロイに接続し、データを操作する Dlangoアプリケーションを作成しました。

次のリソースから Diango MongoDBバックエンドの詳細を学習します。

項目一覧