- ์ํ ์ ๋ณด ๊ธฐ๋ฐ ์ถ์ฒ ์๋น์ค
- ์ปค๋ฎค๋ํฐ
-
Django 2.1.15
-
Python 3.7+
-
Node 12.18.X
-
Vue 2.6+
-
Django REST API ์๋ฒ & Vue.js
-
SQLite
-
AWS ๋ฐฐํฌ
-
2020.06.11(๋ชฉ) - 2020.06.16(ํ)
-
๋ฐํ ์ค๋น : 2020.06.17(์)
-
๋ฐํ : 2020.06.19(๊ธ)
- ์ํ ๋ฐ์ดํฐ ์์ง - The Movie Database(TMDb)
- ๋ฐ์ดํฐ 50๊ฐ ์ด์
- ๋ฐ์ํ ์น
- README.md ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ช ์ ํ์
- ์ํ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ
- ์ํ ์ถ์ฒ ์๋น์ค (์์์ ๊ตฌํ) - ๋ฐฉ๋ฒ ์ถํ
- ๋์์ธ ๋ฐ ๋ฐฐํฌ (+์ ์ง๋ณด์)
-
๊ด๋ฆฌ์
- ์ํ CRUD
- ์ ์ ๊ด๋ฆฌ
-
์ํ ์ ๋ณด
- ์ ์ ์ํ ํ์ ๋ฑ๋ก,์์ ,์ญ์
-
์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ
- ๋ฑ๋กํ ํ์ ๊ธฐ๋ฐ ์ํ ์ถ์ฒ
-
์ปค๋ฎค๋ํฐ(์ํ ๊ด๋ จ ์ ๋ณด)
- ๊ฒ์๊ธ, ๋๊ธ CRUD (์์ฑ, ์์ ์๊ฐ ํ๊ธฐ)
- ๊ฒ์๊ธ pagination
- ๋ณต์์ ๊ธฐ๋ฅ ๊ฒ์ํ, ๊ถํ ๋๋์ด ์ ์ ๊ด๋ฆฌ(ex. ๊ด๋ฆฌ์, ์คํํ)
-
ํ๋ก์ฐ : ์ํ ๊ฐ๋ , ๋ฐฐ์ฐ
- ๋ง์ดํ์ด์ง - ํ๋ก์ฐ ํ ๊ฐ๋
& ํ๋ก์ฐํ ๋ฐฐ์ฐ
- ๊ฐ๋ ์ ์ํ๋ค ๋์ด
- ๋ฐฐ์ฐ ์ถ์ฐ์ ๋์ด
- ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ
- (ํ์ ) & ์ฅ๋ฅด + ํ๋ก์ฐ ํ ๊ฐ๋ , ๋ฐฐ์ฐ ์ถ์ฐ์ํ ์ถ์ฒ -> ํ์ ์ 5 - 10 (์ถ์ฒ์ํ ๊ฐ์๋ ์ถํ ๊ฒฐ์ )
- ๋ง์ดํ์ด์ง - ํ๋ก์ฐ ํ ๊ฐ๋
& ํ๋ก์ฐํ ๋ฐฐ์ฐ
-
๊ตญ๋ฐฅ - ๋ ๋
- ์ํ >> ๋ช ๊ตญ๋ฐฅ? (ex. ์ด์ํ ๋ณด๋ค 1๊ตญ๋ฐฅ ํ ๋ฏ;;)
- ์ ์ : ์๋
์์ผ๋ก ๋์ด ๊ณ์ฐ
- ํ์ ํ๊ธฐ์ ์ฑ๋ณ, ๋์ด๋ณ ํ๊ธฐ
-
์ํ์งํฅ์ api : ์ํ๋ฐฐ์ฐ ๊ฒ์ > ์ถ์ฐ์ํ ๋ฆฌ์คํธ -
TMDB : ์ํ ๋ฆฌ์คํธ + ์ถ์ฐ ๋ฐฐ์ฐ๋ค
-
TMDB ์ํ ์ถ์ฐ ๋ฐฐ์ฐ +
์ํ ์งํฅ์ api ๊ฒ์> ์ถ์ฐ์ํ ๋ฆฌ์คํธ -
TMDB ์ํ + ์ถ์ฐ ๋ฐฐ์ฐ >> ๋ฐฐ์ฐ๋ก ์ถ์ฐ ์ํ ๊ฒ์ ๊ฐ๋ฅ
- ERD cloud ๋ชจ๋ธ ์ ๋ฐ์ดํธ - Add user favors
- Update logic - loads movie data
- Django_api
-
์ํ ๋ฐ์ดํฐ ์ ๋ ฅ (TMDB API ์ด์ฉ)
-
django ๋ชจ๋ธ ๊ตฌ์ถ
-
serializers.py ๋ฑ DRF ํ๊ฒฝ ์ค์
-
[ ] ManyToMany field์ ํด๋นํ๋ ์ค๊ฐ ํ ์ด๋ธ ์์ฑ - model (actor ์๊ฐ ๋๋ฌด ๋ง์)6/13 - 14 : ์ฃผ๋ง ๋์ ํด๊ฒฐํ๊ธฐactor ๊ทธ๋ฃน ๊ณ ๋ฏผํด๋ณด๊ธฐ
-
์ถ์ฒ์๊ณ ๋ฆฌ์ฆ : ๋ก์ง ๊ณ ๋ฏผ (์ฃผ๋ง๊ณผ์ )
- Vue_front - ์ฃผ๋ง๊ณผ์
- Data ๋ฐ์์ค๊ธฐ
- ํ๋ฉด๊ตฌ์ฑ
- Home(index)
- a) navbar
- navigation
- b) body
- all movies(carousel, sort by desc)
- user favor movie(with carousel)
- c) pagination
- a) navbar
- User - signup, signin, signout
- User Favors - a) favor_actors - b) favor_direcotors - c) favor_genres
- Home(index)
- ์ํ ์ถ์ฒ ๋ก์ง
- url path
- ์๊ฐ ๋๋ค๋ฉด JWT ์ค์
- view, component ๊ตฌ์ฑ
-
Navbar : ์ ์ฒด ์ํ ๋ฆฌ์คํธ, ๊ฒ์ํ,
-
Movieda
-
ํ
-
์ ์ฒด์ํ
-
์ถ์ฒ์ํ
(์ข์ํ๋๋ฐฐ์ฐ, ์ข์ํ๋๊ฐ๋ , ์ข์ํ๋์ฅ๋ฅด) -
์ํ๊ฒ์
-
ํ์๊ฐ์ (~~๋ ํ์ํฉ๋๋ค.)
-
๋ก๊ทธ์ธ (๋ก๊ทธ์์)
-
๋ง์ดํ์ด์ง
- ํ๋ก์ฐ ๋ชฉ๋ก (๋ฐฐ์ฐ, ๊ฐ๋ )
-
๊ฒ์ํ
-
-
Main : ์ถ์ฒ ์ํ, ์ต์ ์ํ(๋ค๋ฅธ ์ํ ๋ชฉ๋ก) - index
- ์ถ์ฒ ์ํ (8๊ฐ, ์ข์ํ๋ ์ํ ์ฅ๋ฅด ์์ฃผ ex. ์ด๋ฐ ์ํ ์ด๋์? ์ค๋ ๋ญ ๋ณด์ง?)
- ์ต์ ์ํ
-
MyPage : (๊ฐ์ธ์ ๋ณด์์ ), ๋ด๊ฐ ์ด ๋ฆฌ๋ทฐ, ํ๋ก์ฐํ๋ ๊ฐ๋ , ๋ฐฐ์ฐ, ์ํ ๋ฆฌ์คํธ - Accounts/mypage
-
main : ๊ฐ๋ตํ ๋ด ์ ๋ณด, ๋ด๊ฐ ์ด ๋ฆฌ๋ทฐ, ํ๋ก์ฐ ๋ฐฐ์ฐ-๊ฐ๋ -์ํ (๊ฐ์)
-
์ถ์ฐ ์ํ(์ค๋ ๋ ์ง 1-2๋ฌ ์ํ๋ค ๋ฆฌ์คํธ) or ์ ์ฒด ์ํ ๋ฆฌ์คํธ๋ฅผ ์๊ฐ์
-
๋๋ณด๊ธฐ (Modal ์ด์ฉ)
- ๋ฆฌ๋ทฐ
- ๋ฐฐ์ฐ - ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๊ณ ์ข์์์ทจ์๊ธฐ๋ฅ
- ๊ฐ๋
- ์ํ
-
-
๊ฒ์ํ : ์์ ๊ฒ์ํ (๋ง๋จธ๋ฆฌX ๋จ์ ๊ธ ์์ฑ๊ณผ ๋๊ธ) - Community/index (/community/<int:article_pk>/)
-
์ํ - Movies/index
- ๋ํ
์ผ : ์ธ๋ค์ผ, ์ค๊ฑฐ๋ฆฌ, ์ถ์ฐ์ง, ๊ฐ๋
- ์ถ์ฐ์ง ์ ๋ณด : ๋ํ 5๋ช > ๋๋ณด๊ธฐ (์ ์ฒด ์ถ์ฐ์ง ๋ฆฌ์คํธ - Modal ์ด์ฉ) ์ด๋ฆ ๋๋ฅด๋ฉด ์ข์์ ๊ธฐ๋ฅ
- ๋ํ
์ผ : ์ธ๋ค์ผ, ์ค๊ฑฐ๋ฆฌ, ์ถ์ฐ์ง, ๊ฐ๋
๊ฐ์ ์ ์ฒด
- 'data' : ์ํ ์ ์ฒด ๋ฐ์ดํฐ('id', 'title', 'summary', 'release_date', 'running_time', 'poster', 'genres', 'actors', 'directors',)
- 'recommend_movies' : ์ข์์ ๋๋ฅธ ์ํ๋ค์ ์ฅ๋ฅด ๊ธฐ๋ฐ ์ถ์ฒ ์ํ ๋ฐ์ดํฐ
- ๋ก๊ทธ์ธ๋ ์ ์ ๊ฐ ํด๋น ๋ฐฐ์ฐ๋ฅผ ์ข์์ ํ๋ค๋ฉด ์ทจ์, ์ํ์ผ๋ฉด ์ข์์
- add, remove ๋ฉ์์ง ๋ฆฌํด
- ๋ก๊ทธ์ธ๋ ์ ์ ๊ฐ ํด๋น ๊ฐ๋ ์ ์ข์์ ํ๋ค๋ฉด ์ทจ์, ์ํ์ผ๋ฉด ์ข์์
- add, remove ๋ฉ์์ง ๋ฆฌํด
- ๋ก๊ทธ์ธ๋ ์ ์ ๊ฐ ํด๋น ์ํ๋ฅผ ์ข์์ ํ๋ค๋ฉด ์ทจ์, ์ํ์ผ๋ฉด ์ข์์
- add, remove ๋ฉ์์ง ๋ฆฌํด
POST
keyword
๋ฐ์ดํฐ - form ์ด์ฉ?
- ํด๋น ํค์๋๋ฅผ ํฌํจํ๋ ์ํ ๋ฐ์ดํฐ(ํค์๋ ๊ฒ์ : ์ํ ์ ๋ชฉ, ๋ฐฐ์ฐ, ๊ฐ๋ )
- 'serializer.data': ์ ์ ๋ฐ์ดํฐ('id', 'username', 'favorite_actors', >'favorite_directors', 'favorite_movies')
- ๋ด๊ฐ ์ด ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ : ์ ์ ์ ๋ณด๊ฐ ์๋ ์ ์ id(pk) ๊ฐ
- django ๊ตฌํ or vue ๊ตฌํ
- ์ฅ๊ณ > ๊ธฐ์กด ์ข์์ ๋๋ ๋์ง ์ ๋ฌด
- ๋ทฐ > ์ด๋ ๋ฐฐ์ฐ, ๊ฐ๋ ์ ๋๋ ๋์ง
- ๋ชจ๋ ๊ฒ์๊ธ ๋ณด๊ธฐ
- ์ ์ฒด article ๋ฐ์ดํฐ
POST method. form data - title, content
- ์๋ก์ด ๊ฒ์๊ธ ๋ฑ๋ก
- ๋ก๊ทธ์ธ ํ์
GET
method : ๊ฒ์๊ธ ์์ธํ ๋ณด๊ธฐ (+ ๋ฑ๋ก๋ ๋๊ธ)PUT
method : ๊ฒ์๊ธ ์์ (ํ์ฌ ๋ก๊ทธ์ธ๋ ์ ์ == ๊ฒ์๊ธ ๋ฑ๋ก ์ ์ )DELETE
method : ๊ฒ์๊ธ ์ญ์ (ํ์ฌ ๋ก๊ทธ์ธ๋ ์ ์ == ๊ฒ์๊ธ ๋ฑ๋ก ์ ์ )
POST method. form data - content
- ํด๋น ๊ฒ์๊ธ์ ๋๊ธ ๋ฑ๋ก
- ๋ก๊ทธ์ธ ํ์
PUT
method : ๋๊ธ ์์ (ํ์ฌ ๋ก๊ทธ์ธ๋ ์ ์ == ๋๊ธ ๋ฑ๋ก ์ ์ )
DELETE
method : ๋๊ธ ์ญ์ (ํ์ฌ ๋ก๊ทธ์ธ๋ ์ ์ == ๋๊ธ ๋ฑ๋ก ์ ์ )
ํ์์ ์ธ ๊ธฐ๋ฅ์ ์ฐ์ ์ ์ผ๋ก ๊ตฌํ
Community,
-
์ํ ์ ์์/๋ฐฐ์ฐ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
-
๊ธฐ์กด: TMDB - movies/<int:movieID>/credits => papago api๋ฒ์ญ
-
๋ฐ์ดํฐ ํ์ฑ์์ ํจ์จ์ฑ ์ ํโโ
-
papago api ์ผ์ผ ์ฌ์ฉ๋ ์ด๊ณผ (limit - ์ฝ 40๊ฐ ์ํ)
-
๊ฐ์ : TMDB - movies => original_title๋ก naver/search_movie ์ฌ์ฉ
(๊ฒ์๋์ง ์๋ ์ธํ ์ ๋ณด๋ง papago api๋ก ๋ฒ์ญ ํ ์ฌ์ฉ.)
- naver ์ํ๊ฒ์ - original_title๋ก ๊ฒ์ ์ ์ป์ด์ง๋ ๊ฐ๋ /๋ฐฐ์ฐ ์ ๋ณด ์ฌ์ฉ ๐ฅ
- papago api ์์ฉ๋ ์์น
โ๏ธ (limit - ์ฝ 300๊ฐ ์ํ)
-
-
models & serializer ์ผ๋ถ ์์
- movie - release_date | DateTimeField => DateField
- serializer - review_detail | read_only=True ์ ์ฉ
-
views.py - scrap(์ํ ๋ถ๋ฌ์ค๊ธฐ) fix
- api_scrap ์ค consistency๊ฐ ์ผ์นํ์ง ์๋ ๋ฐ์ดํฐ ์ ์ธ
-
[x]
-
Movie - CSS์ ์ฉ
- Home | ์ถ์ฒ์ํ(recommendMovie) ์ ๊ณต
- Detail | review๋ถ๋ถ ํ์ choice_option์ผ๋ก ์ ํ ๊ฐ๋ฅ
-
Accounts - Login, Signup | ์ธ์ฆ์คํจ์ ์๋ฆผ๋ฉ์ธ์ง ์ ๊ณต
-
๊ด๋ฆฌ์ ์ ์ - user.
is_staff
-
์ฝ๋์ ๋ฆฌ
-
Community
- ๊ฒ์๊ธ id (์๋์ผ๋ก 1๋ฒ์ผ๋ก) // ๊ตณ์ด ํ์ํ๊ฐ...?- ๊ฒ์๊ธ ๋ฐ์ ์ฝ๋ฉํธ์์ฑ / pass- ์ญ์ - ~~๊ฒ์๊ธ ์์ฑ ์๊ฐ(์ด์๊ฒ) > 1์ฐจ ํด๊ฒฐ > ์๋ฃ
-
README ์์ฑ
-
๋ฐฐํฌ
-
๋์์์ ์
- ์ฃผ์ ๋ฐ ์ฝ๋ ์ ๋ฆฌ
- ๊ด๋ฆฌ์ ์ ์ ์ถ๊ฐ
- formatted_date ์ ๊ณต
- ๊ณตํต | ์๋ชป๋ ๊ฒฝ๋ก - 404page ์ถ๊ฐ
- Community view ์ถ๊ฐ | CRD
- ArticleListView
- ArticleView
- ArticleDetail
- ArticleCreate
- ArticleListView
- LikeMovie ๊ธฐ๋ฅ ์ถ๊ฐ
- ์ข์์ ์ํ ๋ฐํ์ผ๋ก ์ถ์ฒ์ํ ์ ๊ณต
- ๋ชจ๋ ๊ฒ์๊ธ ๋ณด๊ธฐ
- ์ ์ฒด article ๋ฐ์ดํฐ
POST method. form data - title, content
- ์๋ก์ด ๊ฒ์๊ธ ๋ฑ๋ก
- ๋ก๊ทธ์ธ ํ์
GET
method : ๊ฒ์๊ธ ์์ธํ ๋ณด๊ธฐ (+ ๋ฑ๋ก๋ ๋๊ธ)PUT
method : ๊ฒ์๊ธ ์์ (ํ์ฌ ๋ก๊ทธ์ธ๋ ์ ์ == ๊ฒ์๊ธ ๋ฑ๋ก ์ ์ )DELETE
method : ๊ฒ์๊ธ ์ญ์ (ํ์ฌ ๋ก๊ทธ์ธ๋ ์ ์ == ๊ฒ์๊ธ ๋ฑ๋ก ์ ์ )
- user.favorite_movies ๋ฑ๋ก ์ฌ๋ถ์ ๋ฐ๋ผ ์ข์์/์ข์์ ์ทจ์ ๊ฐ๋ฅ