BI Films <= ํด๋ฆญํ๋ฉด ์ฌ์ดํธ๋ก ์ด๋ํฉ๋๋ค.
ํ ์คํธ ์์ด๋
id : test
pw : test1234!
UCC<= ํด๋ฆญํ๋ฉด ์ ํ๋ธ๋ก ์ด๋ํฉ๋๋ค.
โ [๊ฐ์ธ์ ์ธ ์ ์]
-
[9์ ] ํ์ด์ง๋ค์ด์
๋ฐ์ดํฐ๋ฅผ ๋ถํ ํด์ ๊ฐ์ ธ์ค์ง ์๊ณ ํ๋ฒ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์์ฌ์ ๋ค. ๊ทธ๋๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ ๊ตฌํํ๋ค.
-
[8์ ] ํ๋กํ ํ์ด์ง ๊ตฌํ
์ ์ ํ๋ก์ฐ ๊ธฐ๋ฅ์ ๋ฏธ๊ตฌํ ํ ๊ฒ์ด ์์ฝ๋ค. ๋ ๋ณด์ฌ์ค ๋ฐ์ดํฐ๊ฐ ๋ง์๋ฐ ํ์ด์ง๋ค์ด์ ์ ์ด๋ป๊ฒ ํ์ฉํด์ผํ ์ง ๊ณ ๋ฏผ์ด ๋ ํ์ํ๋ค
-
[8์ ] ์ ์ ๊ด๋ฆฌ ํ์ด์ง ๊ตฌํ
๊ด๋ฆฌ์๊ฐ ํ์ ํํด ๊น์ง๋ ์ข์๋ฐ ๋ค ๊ตฌํํ๊ณ ๋์ ๊ฒฝ๊ณ ์นด๋ (Yellow Card) ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ง ๋ชปํ ๊ฒ์ด ์์ฌ์ ๋ค.
-
[8์ ] ์ํ ์ข์์ ๊ตฌํ
๋ก๊ทธ์ธ ํ์ง ์์ ๊ฒฝ์ฐ ์ข์์๊ฐ ๋ณด์ด์ง ์๋ ๊ฒ์ด ์์ฝ๋ค.
์ํ / ํ์ <=> ์ ์ <=> ๊ฒ์๊ธ / ๋๊ธ
### movies/models.py
from django.db import models
from django.conf import settings
# Create your models here.
class Genre(models.Model):
name = models.CharField(max_length=100)
class Movie(models.Model):
title = models.CharField(max_length=100)
original_title = models.CharField(max_length=100, null=True)
release_date = models.DateField()
popularity = models.FloatField(null=True)
vote_count = models.IntegerField(null=True)
vote_average = models.FloatField()
adult = models.BooleanField(null=True)
overview = models.TextField()
original_language = models.CharField(max_length=100, null=True)
poster_path = models.CharField(max_length=100, null=True)
backdrop_path = models.CharField(max_length=100, null=True)
genres = models.ManyToManyField(Genre, related_name = 'movies')
like_users = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='like_movies', blank=True)
class Rank(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
movie = models.ForeignKey(Movie, related_name='ranks', on_delete = models.CASCADE)
score = models.IntegerField()
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)## accounts/models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
from movies.models import Movie
class User(AbstractUser):
rank_movie = models.ManyToManyField(
Movie,
related_name='rank_user',
)## articles/models.py
from django.db import models
from django.conf import settings
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
class Comment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
article = models.ForeignKey(Article, related_name='comments', on_delete = models.CASCADE)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธ ํ๋ ๊ฒฝ์ฐ์๋ง ์ํ ๋ฑ๋ก / ์์ / ์ญ์ ๋ฒํผ์ด ๋ณด์ด๊ฒ ํ๋ค. ๋ ํค๊ฐ์ ํ์ธํด์ ๊ด๋ฆฌ์ ํค์ธ ๊ฒฝ์ฐ์๋ง ์ฅ๊ณ ์์ ์คํ๋๋๋ก ๊ตฌํํ๋ค.
๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธ ํ๋ ๊ฒฝ์ฐ์๋ง ์ ์ ๊ด๋ฆฌ ํ์ด์ง์์ ์ ์ ํํด ๊ถํ์ ๊ฐ๋๋ค
djangp_pjt5 ์์ ์ฌ์ฉํ ์ํ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ 500๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๋ค.
๋ก๊ทธ์ธ ํ ์ ์ ๋ง ํ์ ๋ฑ๋ก / ์์ /์ญ์ ๋ฐ ์ข์์๋ฅผ ๊ตฌํํ๋ค.
ํ์ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ด ํ๊ฐํ ํ๊ท ํ์ ์ด์์ ์ํ ์ค ์ข์์ํ ์ํ์์ ํ๋๋ฅผ ๋ฝ๊ณ ๊ทธ ์ฅ๋ฅด ์ค์์ ํ๋๋ฅผ ๋ฝ์์ ํ๊ฐํ์ง ์๊ณ ์ข์์ ํ์ง ์์ ์ํ 5๊ฐ๋ฅผ ๊ณจ๋ผ์ค๋ค.
๋ก๊ทธ์ธ ํ ์ฌ์ฉ์๋ง ๊ธ์ ์กฐํ / ์์ฑ ํ ์ ์๊ณ ๋ณธ์ธ๋ง ๊ธ์ ์์ / ์ญ์ ํ ์ ์๋ค.
๋ก๊ทธ์ธ ํ ์ฌ์ฉ์๋ง ๊ฒ์๊ธ์ ๋๊ธ์ ์์ฑํ ์ ์๊ณ ์์ฑ์ ๋ณธ์ธ๋ง ๋๊ธ์ ์์ / ์ญ์ ํ ์ ์๋ค.
์์ฑ ๋ฐ ์์ ์๊ฐ ์ ๋ณด๋ฅผ ํฌํจํ๋ค.
๊ฒ์๊ธ์๋ ํ์ด์ง๋ค์ด์ ์ ๊ตฌ์ฑํ๋ค.
5๊ฐ ๋๋ URL ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ค.
์๋ฌ ํ์ด์ง๋ alert ๋ฅผ ํ์ฉํด์ ๊ตฌํํ๋ค.
๋น๋๊ธฐ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ๊ทธ๋ฐ๋ฐ ๋ฐ์ดํฐ๊ฐ 500๊ฐ๊ฐ ๋๊ณ ํ๋ฒ์ ๊ฐ์ ธ์ค๋ คํ๋ ์ด์ง ๋ฒ๋ฒ ๊ฑฐ๋ฆฌ๋ ๊ฒ์ด ๋๊ปด์ง๋ค.
ํฌ๊ฒ 3 ๊ฐ์ง ์ ๋๋ก ๋๋์ ์ ์์ฝํ ์ ์๋ ๊ฒ ๊ฐ๋ค.
-
์๊ฐ๋ณด๋ค ์๊ฐ์ด ๋ง์ด ๋ถ์กฑํ๋ค.
ํ์์ ํ๋ฃจ ํ๋ก์ ํธ์์๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ตฌํํด์ ๋ง์ ๊ฒ์ ํ ์ ์์ ์ค ์์๋๋ฐ ์ฅ๊ณ ์ ๋ทฐ ๋ชจ๋ ํ๋ ค๋ ์๊ฐํ์ง๋ ๋ชปํ ์ค๋ฅ๋ ๋ง์๋ค. ์ฒ์์๋ ์์ฌ์ ๋ถ๋ ค์ ์ด๊ฒ๋ ๋ฃ์ด๋ณด๊ณ ์ ๊ฒ๋ ๋ฃ์ด๋ณด๊ณ ํ์ง๋ง ์ด๊ฑธ ๊ตฌํํ๋ฉด ์ ๊ฒ ์ค๋ฅ๊ฐ ์๊ธฐ๊ณ ์ ๊ฑฐ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋ฉด ์ด๊ฒ ๋ค์ ๋ฌธ์ ๊ฐ ๋๋ ์ํฉ๋ค์ด ๋ง์๋ค. ๋ ์ํ ๋ฐ์ดํฐ๋ ์๊ฐ ๋จ์ผ๋ฉด api ํ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๋ณด๋ ค ํ์ง๋ง ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ๋ฐ์ ์์ด์ ์์ฌ์ ๋ค.
๋๋ฉ์ธ(bifilms.xyz)์ ๊ตฌ๋งคํ๋๋ฐ ๋ฐฐํฌํ ๋ ๋ฑ๋ก๋ ๋๋ฉ์ธ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ด ์๊ฐ์ฒ๋ผ ์ ์๋์๋ค ๊ฐ๊ฒฉ์ด ์ธ๋ค๊ณ ํธ์ด์คํ ์ด๋ฅผ ์ฌ์ฉํ๋๋ฐ ์๋ฃ๊ฐ ๋ถ์กฑํ๋ค. ๋ค์๋ฒ์๋ ์๋ฃ๋ฅผ ์ฐพ๊ธฐ ์ฌ์ด ์ฌ์ดํธ๋ฅผ ํ์ฉํด๋ณด์์ผ๊ฒ ๋ค.
-
live share ์ฌ์ฉ ํ๊ธฐ.
live share ๊ฐ ํ์ ํ๊ธฐ ์ข์ ๊ฒ ๊ฐ๊ธด ํ๋ค. ํ์ง๋ง ๋์ด ๊ฐ์ ํ์ด์ง์์ ์์ ํ๋ค ๋ณด๋ฉด ์ ์ ์๋ ์๋ฌ๊ฐ ๊ฐํน ๋ฐ์ํ๋ค. ์์ธ์ ์ฐพ์์ ๊ณ์ ํด๊ฒฐํ๋ ค ํด๋ ํด๊ฒฐ ๋์ง ์๋๋ฐ live share ๋ฅผ ๋๋ ํด๊ฒฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์๋ค. ๋ ์ข์ ํ์ ํด์ด ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
-
์ด๋์๋ ๋ฐฉ๋ฒ์ ์๋ค.
vue ์์๋ ํ์ด์ง๋ค์ด์ ์ ๋ฐ๋ก ๋ฐฐ์ฐ์ง ์์์ ์ด๊ฑธ ํ ๊น ๋ง๊น ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ค. ๊ทธ๋ฐ๋ฐ vue ์์๋ pagination ์ ์ผ์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ณ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฐพ์์ ์๋ํด๋ณด์์ง๋ง ์คํจํ๋ค๊ฐ vuetify ๋ผ๋ ๊ฒ์ ์ถ๊ฐํด์ ์๋ํ์ฌ ์ฑ๊ณตํ ์ ์์๋ค. ๋ฐฐ์ฐ์ง ์์ ๊ฒ๋ค์ ์ฐพ์์ ๋์ ํ๋ ๊ฒฝํ์ด (์คํจํ์ผ๋ฉด ๋ณ๋ก์๊ฒ ์ง๋ง ์ฑ๊ณตํ์ผ๋๊น) ์ข์๋ ๊ฒ ๊ฐ๋ค.
git branch ๋ฅผ ํ์ฉํ์ง ๋ชปํ ๊ฒ์ด ์กฐ๊ธ ์์ฌ์ ๋ค. ๊ทธ๋๋ ๋ฐฐํฌ๊น์ง ์ฑ๊ณตํ ์ ์์ด์ ์ข์ ๊ฒฝํ์ด ๋ ๊ฒ ๊ฐ๋ค.