π SSAFY 8κΈ° 1νκΈ° κ΄ν΅ νλ‘μ νΈ
νμ¬ μμμ€μΈ μνμ μκ³ νΈλ€μ 보κ³
μ맀κΉμ§ μ λν μ μλ νμ΄μ§λ₯Ό λ§λ€μ!
- μν μΆμ²
def algorithm(request):
movies = get_list_or_404(Movie)
me = request.user
prefer = defaultdict(int)
already_like = []
for movie in me.like_movie.all():
already_like.append(movie.pk)
res = json.loads(movie.genres) # λ¬Έμμ΄ μ μ΄μ¨μ μ μ΄μ¨μΌλ‘
for genre in res['result']:
prefer[genre['genre']] += 1 # λ΄κ° λ³Έ μ₯λ₯΄λ₯Ό preferμ μΆκ°
movie_list = []
for movie in movies:
if movie.pk in already_like: # λ³Έμνλ ν¨μ€
continue
score = movie.vote_average * 0.3 # νμ κ°μ€μΉ 0.3
res = json.loads(movie.genres)
for genre in res['result']:
score += prefer[genre['genre']] * 0.4 # λ΄κ° λ³Έ μ₯λ₯΄ κ°μ€μΉ 0.4
data = movie.release_date
score += releaseDate(data) * 0.2 # μ΅μ μν κ°μ€μΉ 0.2
movie_list.append([score, movie.pk])
movie_list.sort(reverse=True)
my_movie = []
for s, i in movie_list[:10]:
rec_movie = Movie.objects.get(pk=i)
my_movie.append(Movie.objects.get(pk=i))
serializer = MovieSerializer(my_movie, many=True)
return Response(serializer.data, status=status.HTTP_201_CREATED)
μ¬μ©μκ° μ맀ν μνμ 보λ₯Ό λ°νμΌλ‘ κ°μ€μΉλ₯Ό κ³μ°νλ€. κ°μ€μΉ: μννμ 0.3 // λ΄κ° λ³Έ μ₯λ₯΄λ€ 0.4 // κ°λ΄μΌμ 0.2
-
μ¬μ©μκ° λ³Έ μνλ₯Ό κ°μ§κ³ μ₯λ₯΄λ₯Ό μΉ΄μ΄νΈν΄μ€λ€.
already_like = [] for movie in me.like_movie.all(): already_like.append(movie.pk) res = json.loads(movie.genres) # λ¬Έμμ΄ μ μ΄μ¨μ μ μ΄μ¨μΌλ‘ for genre in res['result']: prefer[genre['genre']] += 1 # λ΄κ° λ³Έ μ₯λ₯΄λ₯Ό p
-
DB μ μ₯λμ΄ μλ λͺ¨λ μνλ₯Ό μννλ©΄μ μ΄λ―Έ μ맀ν μ μ΄ μλ μνλ©΄ λκΈ°κ³ μλλΌλ©΄ κ°μ€μΉλ₯Ό μ μ©νκ³ (μ μ, μν pk ) μ νν ννλ‘ λ¦¬μ€νΈμ μ μ₯νλ€.
movie_list = [] for movie in movies: if movie.pk in already_like: # λ³Έμνλ ν¨μ€ continue score = movie.vote_average * 0.3 # νμ κ°μ€μΉ 0.3 res = json.loads(movie.genres) for genre in res['result']: score += prefer[genre['genre']] * 0.4 # λ΄κ° λ³Έ μ₯λ₯΄ κ°μ€μΉ 0.4 data = movie.release_date score += releaseDate(data)
3. μμμ μ μ₯ν΄μ λ΄λ €μ¨ 리μ€νΈλ₯Ό λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬νκ³ 10κ°λ₯Ό μ¬λΌμ΄μ±μ νλ€. κ·Έ ν 리μ€νΈμ λ΄κΈ΄ μνpk κ°μΌλ‘ μ 체 μνμ 보λ₯Ό μΆμΆνμ¬ λ¦¬ν΄νλ€
movie_list.sort(reverse=True)
my_movie = []
for s, i in movie_list[:10]:
rec_movie = Movie.objects.get(pk=i)
my_movie.append(Movie.objects.get(pk=i))
serializer = MovieSerializer(my_movie, many=True)
return Response(serializer.data)
- μν μ맀νκΈ°
μν μ맀μ μμλ μνμ ν -> λ μ§(λ μμΌ) -> μνμκ° -> μμκ΄ -> μ’μμ ν μμλ‘λ§ μ΄λ£¨μ΄ μ§ μ μλλ‘ νλ€.
μ맀 νμ΄μ§λ μνμ pk κ°μ router params λ‘ κ°μ Έκ°κΈ° λλ¬Έμ μνμ ν λΆλΆμ ν΄κ²° λλ€.
λ μ§, μκ°, μμκ΄μ κ°κ° ν΄λΉλλ ν
κ·Έμ v-if
λ¬Έμ μ΄μ©νμ¬ μ λ¨κ³μ κ°μ΄ μ νλμμ λλ§ νμ±νλλλ‘ νμ¬ μμλ₯Ό μ§ν¬ μ μλλ‘ νλ€.
κ·Έλ κ² ν¨μΌλ‘μ μμκ΄ μ νκ°μ΄ μ‘΄μ¬ν κ²½μ°(μ νλμμ κ²½μ°)μλ§ μ’μ μ ν μ»΄ν¬λνΈκ° λμ¬ μ μκ² νλ€.
μ’μ κ°κ°μ μλ³κ°μ ν(i)κ³Ό μ΄(j)λ‘μ μμ±λλ©° κ²°μ κΉμ§ μ§νν λΆλΆμ Django DBμ μ μ₯νλ€.
μμ λͺ¨λΈμμ μν μκ° μλ³μλ‘ νΉμ μνμ μκ°λ, μμκ΄μ μ’μμ 보λ₯Ό λΆλ¬λ΄ μ΄λ―Έ DBμ μ μ₯λ κ°μ΄λΌλ©΄ ν΄λ¦μ λ§μλμμ μ’μ μ νμ΄ λμ§ μκ² λ§λ€μλ€.
κ·Έλ κ² μ ν΄μ§ μν μ맀μ 보(μν, λ μ§, μκ°, μ’μ) μ μ μ μ μ°κ²°μ§μ λͺ¨λΈ(Reservation)μ λ§λ€μ΄ νμ μ μ κ° μμ½ν μν μ 보λ₯Ό μ½κ² νμΈν μ μλλ‘ νλ€.
- λ±μ§ μμ€ν
μ맀ν μνμ κ°μ, μμ±ν 리뷰μ κ°μ, μ¬μ©μλ₯Ό νλ‘μ°ν μμ λ°λΌ μμ§μ μΈ λ³΄μμ μ€μΌλ‘μ μΉμ¬μ΄νΈ νλμ μ§μ€ν μ μκ² νκΈ°μν΄ λ§λ€μλ€.
λ±μ§μ’ λ₯λ μ΄ 9κ°λ‘ λ¨Όμ μ 체 λ±μ§λͺ©λ‘μ λ§λ€κ³ μ μ κ° μμ±(νμκ°μ )λ λλ§λ€ κ·Έ λͺ©λ‘μ μ μ μ μ°κ²° μ§μ΄ ν μ΄λΈμ μμ±νλ€. νλμλ νλ μ¬λΆλ₯Ό κ°λ₯΄ν€λ νλλ₯Ό νλ λ§λ€μ΄ μ μ κ° κ·Έ λ±μ§λ₯Ό νλνλμ§ μνλμ§λ₯Ό DB μ μ μ₯νμλ€.
μ μ κ° μμ±λν μ€νλλ ν¨μ 1~9 μ pk κ°μ κ°μ§λ BadgeList μ κ°μ΄ μ μ μ μ°κ²°λμ΄ Badge μ μ μ₯λλ€.
- μ΅μ μν μκ³ νΈ λ³΄κΈ°
- κ°μ₯ μΈκΈ° μλ μ΅μ μν TOP 10 λͺ©λ‘ 보기
- κ°μ₯ μΈκΈ° μλ λ¦¬λ·°λ€ λͺ¨μ보기
- κ²°κ³Όκ° μ¬λ¬κ°μΌ κ²½μ° λͺ©λ‘ν/κ°€λ¬λ¦¬ν ν 1νμ¬ μ¬λ¬ κ°μ κ²°κ³Ό νμ΄μ§
- κ²°κ³Όκ° ν κ°μ§μΌ κ²½μ° μν μμΈ νμ΄μ§λ‘ μ΄λ
- μν μμΈ μ 보 λνλ΄λ νμ΄μ§
- 리뷰 μ°κΈ°
- νμ¬κΉμ§ μ맀ν μν μ 보 보기
- νμ¬κΉμ§ λ°μ λ±μ§ μ 보 보기
- μν μ·¨ν₯ 보기
- λ‘κ·ΈμΈ μ μ λ§ μλΉμ€λ₯Ό μ΄μ© κ°λ₯
- λ©μΈ νμ΄μ§μμ λ°λ‘ νμκ°μ μ λ
- λλ€μΌλ‘ λ³κ²½λλ λ°°κ²½ μ΄λ―Έμ§
- Vue.js
- Vuex
- Django
- SQLite3
- Bootstrap
- Javascript
- Python3
- λ°μ€ν¬ν, λ ΈνΈλΆ, λͺ¨λ°μΌ λ± λ°μν UI μ€κ³ κ³Όμ μ κ²½ννμ¬ μ΄μ λν μλμ μμ μ μμμ
- ERD ꡬμ/μ€κ³ κ³Όμ μ ν΅ν΄ Model κ°μ κ΄κ³λ₯Ό μ΄ν΄νκ³ μ΄λ₯Ό νμ©ν API μ€κ³ μλμ μμ μ μμμ
- Client - Server κ° μΉ λ°μ΄ν° ν΅μ κ³Όμ μ λν΄ μ΄ν΄ν μ μμκ³ , μ΄ κ³Όμ μμ Javascriptμ λΉλκΈ° κ°λ μ νμ€νκ² μ΄ν΄νκ³ λ‘μ§μ μ€κ³ν μ μλ μλμ μμ μ μμμ
- νλ‘μ νΈμ μ λ°μ μΈ(κΈ°ν/μ€κ³/κ°λ°) κ³Όμ μ ν΅ν΄ μΉ μλΉμ€μ λμ κ³Όμ μ λν΄ μ΄ν΄ν μ μμμ
- Git Issue, Branch μ λ΅ λ±μ νμ©νμ¬ νμ μ μ μ©μ± λμ΄κΈ°
- ERD μ€κ³ ν¬μ μκ° λμ΄κΈ°
- MVP μμ£Όμ κ°λ° & μ μ§λ³΄μνλ©° λΆκ° κΈ°λ₯ κ°λ°
- AWS EC2 νμ©ν μ€μ λ°°ν¬
$ git clone https://github.com/SuhyungK/final_project.git
$ cd final_project
$ cd final-pjt-front
$ npm install
$ npm run serve
- Mac OS
$ git clone https://github.com/SuhyungK/final_project.git
$ cd final_project
$ cd final-pjt-back
$ python3 -m venv venv
$ source venv/bin/activate
$ python3 -m pip install -r requirements.txt
$ python3 manaage.py makemigrations
$ python3 manage.py migrate
$ python3 manage.py runserver
- Windows 10
$ git clone https://github.com/SuhyungK/final_project.git
$ cd final_project
$ cd final-pjt-back
$ python -m venv venv
$ source venv/Scripts/activate
$ pip install -r requirements.txt
$ python manaage.py makemigrations
$ python manage.py migrate
$ python manage.py runserver