애플리케이션 만들기
quickstart
프로젝트 에서 sample_mflix
라는 Atlas 샘플 데이터베이스 와 상호 작용하는 애플리케이션 만들 수 있습니다. 이 데이터베이스 에는 영화에 대한 정보를 저장하는 movies
컬렉션 이 포함되어 있습니다. 데이터베이스 에는 스트리밍 서비스를 사용하는 영화 뷰어에 대한 정보를 저장하는 users
컬렉션 도 포함되어 있습니다.
데이터베이스 에 대해 자세히 sample_mflix
학습 Atlas 설명서에서샘플 Mflix 데이터 세트를 참조하세요.
'sample_mflix' 앱 만들기
프로젝트의 루트 디렉토리 에서 다음 명령을 실행 사용자 지정 템플릿을 기반으로 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'"
줄이 포함되도록 합니다.
영화, 시상 및 시청자 데이터에 대한 모델 만들기
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
컬렉션 나타내며 영화를 보는 사람을 위한 계정 정보를 저장합니다.
데이터를 표시하는 뷰 만들기
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 데이터베이스 액세스 데 사용할 수 있는 기본 Django MongoDB 백엔드 앱 생성됩니다.