[레트로플릭스] 상세페이지 ajax

seonghyeon·2022년 2월 4일
0
def select_movie_detail(request):
    if request.method == 'GET':
        
        abc = request.user.id

        print(abc)
        #넘겨받는 영화 제목
        title_give = '올드보이'

        #############Movie.objects.get(title = { 여기에 넘겨받은 영화 제목이 들어감 })
        movie_find = Movie.objects.get(title = title_give)


        ###### 찾은 영화의 .opneDt ex ) .title = 끌로드부인 , .openDt = 1990, 이런 값들에  접근이 가능합니다
        print(movie_find.openDt)
        print(movie_find.title)
        print(genre_idx[movie_find.genre])
        print(movie_find.star)
        
        #### 영화와 비슷한 영화 추천 정보 #####

        user_title = movie_ratings.pivot_table('rating', index='title', columns='userId')

        user_title = user_title.fillna(0)

        item_based_collab = cosine_similarity(user_title, user_title)

        item_based_collab = pd.DataFrame(item_based_collab, index=user_title.index, columns=user_title.index)

        # 현재영화와 비슷하게 유저들로부터 평점을 부여받은 영화들은?

        
        # recommend_movies = item_based_collba[넘겨받은 영화의 제목 넣는 부분].sort_values(ascending=False)[1:11].index 
        recommend_movies = item_based_collab[title_give].sort_values(ascending=False)[1:11].index

        # 추천 영화를 리스트로 변경 해주는 부분
        recommend_list = [i for i in recommend_movies]

        print(recommend_list)
        detail= {'title':movie_find.title,
        'openDt':movie_find.openDt,
        'star':movie_find.star,
        'genre':genre_idx[movie_find.genre],
        'recommend_list': recommend_list
        }
        
        #########ajax와 연결후 ajax로 전달해줄 jsonresponse
        #########return JsonResponse(detail)
        return render(request, 'main/detail.html',detail)

상세 페이지 모달의 html내용을 바꿔주기위해서 ajax로 연결해서 영화이름을 전달하고 필요 내용을 전달받아 교체해주는 방법을 쓰기로했다

<클래스이름>.objects.values() :

  • .values()로 dictionary의 key와 value에 접근이 가능하다.
  • QuerySet()은 리스트이고, 객체는 dictionary 이므로 [index]['key'] 의 형식으로 value값에 접근이 가능하다

<클래스이름>.objects.get(id=1) :

  • get()은 dictionary의 요소 하나를 반환한다.
  • 해당 조건의 요소가 존재하지 않을때는 DoesNotExist, 여러개 존재할때는 MultipleObjectsReturned 에러가 발생한다.
  • 하나의 객체이기에 반환되기 때문에, dot notation으로 접근이 가능하다. .name
title_give = '올드보이'
movie_find = Movie.objects.get(title = title_give)
print(movie_find.openDt) 
> 2003

0개의 댓글