Docs Menu

애플리케이션 만들기

quickstart 프로젝트 에서 sample_mflix라는 Atlas 샘플 데이터베이스 와 상호 작용하는 애플리케이션 만들 수 있습니다. 이 데이터베이스 에는 영화에 대한 정보를 저장하는 movies 컬렉션 이 포함되어 있습니다. 데이터베이스 에는 스트리밍 서비스를 사용하는 영화 뷰어에 대한 정보를 저장하는 users 컬렉션 도 포함되어 있습니다.

데이터베이스 에 대해 자세히 sample_mflix 학습 Atlas 설명서에서샘플 Mflix 데이터 세트를 참조하세요.

1

프로젝트의 루트 디렉토리 에서 다음 명령을 실행 사용자 지정 템플릿을 기반으로 sample_mflix 이라는 새 장고 앱 만듭니다.

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 컬렉션 나타내며 영화에 대한 정보를 저장합니다. 이 모델에는 Award 객체 저장하는 awards라는 임베디드 모델 필드 포함되어 있습니다. 이 모델에는 영화를 설명하는 장르 목록을 저장하는 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

프로젝트 루트에서 다음 명령을 실행 Movie, Award, Viewer 모델에 대한 마이그레이션을 생성하고 변경 사항을 데이터베이스 에 적용 .

python manage.py makemigrations sample_mflix
python manage.py migrate

이 단계를 완료하면 sample_mflix Atlas 데이터베이스 액세스 데 사용할 수 있는 기본 Django MongoDB 백엔드 앱 생성됩니다.