https://developers.themoviedb.org/3/getting-started/introduction
이 사이트로부터 영화 정보를 불러와서 사이트를 만든다.
일단 회원가입을 한 다음에, 설정으로 들어가서 API 키를 복사해주어야 한다.
복사해서 views.py에 my_id = 여기에 복사붙여넣기 해주세요.
일단 요새 인기있는 영화들을 메인페이지에 띄워주기 위해서
Trending에 들어간다.
GET/trending/{media_type}/{time_window}
all이라 하면 다 가져오고, Movie는 영화목록만, Tv는 티비쇼, person은 사람.
이거 굳이 수동으로 하지 않아도, api_key 넣고 적당히 선택하면 자동으로 reqeust url을 만들어주는 부분도 있다. 그걸 복사해서 갖고오면
이런식으로 넣어줄 수가 있다.
pip3 install requests로 다운받고
import requests 작성하고
response = requests.get(url)
resdata = response.text
return render(request, 'index.html', {'resdata':resdata}
response 객체 중에 text 부분만 도려내는 과정이라고 보면 된다.
import json
obj json.loads(resdata)
거기서 이 코드를 덧붙이면 json객체인 resdata를 python객체로 바꿔준다.
obj가 리스트니까 반복문으로 순회가 가능함.
그래서 index.html에 다음과 같이 써줍니다. 맨 위 obj는 빼고ㅇㅇ
이미지도 document Images 탭에 어떻게 넣는지가 나와 있다.
이 문서를 활용해서
이렇게 코드를 고치면
요런식으로 포스터랑 스틸컷?비슷한거 두개가 띄워진다.
이제 상세피이지를 구현해보자.
아까 movie api 관련 페이지에 가서 get details를 보면
이런식으로 상세페이지 구현 방법이 자세히 나와있다.
이걸 활용해서 index.html을 수정해준다.
영화 상세보기를 누르면 상세페이지가 뜨는 것으로 구현해보자.
이런식으로 구현해주면 영화상세보기 a태그를 눌렀을 때 detail이라는 url에 요청이 갈거고, 요청을 보낼 때 o.id도 같이 전달하게 된다. (o.id는 각 영화의 고윳값이다)
그럼 이제 detail이라는 url을 path에 추가해준다.
o.id는 문자열이다.그래서 str를 씀.
이제 views.py에 detail 함수도 구현해보면 됩니다.
이러면 넘겨받은 o.id는 movie_id입니다.
다시 api사이트 공식문서를 보면 중간에 영화 id를 집어넣는 부분이 있습니다. 그부분을 비워가지고 문자열 더하기를 사용해서 넘겨받은 movie_id로 채워놓게끔 코딩한 것이라 보면 됩니다.
최종 코드는 그래서 이렇게 되고요.
구현된 화면은 저렇게 됩니다. 영화상세보기 파란글씨를 누르면은 이제 상세페이지로 이동이 되는 방식입니다.
이제 영화 검색기능도 구현해봅시다.
공식문서에는 다음과 같이 나와있고요.
그래서 영화에 hello가 포함되는 영화를 검색하고 싶다고 하면은 query에 hello를 입력하면 됩니다.
바로 이렇게요. 이 url로 request를 보내주면 됩니다.
검색어를 입력받을 창이 있어야 하니까 forms.py를 만들어줍니다.
글고 다시 views.py로 이동해서
일단 .forms에서 SearchForm을 import해준 다음
받은 요청의 메서드가 포스트면 입력된 내용을 바탕으로 아까 정해둔 url로 get요청을 보내도록 하고
그렇지 않다면, 빈 form을 만들어서 render의 3번째 인자로 함께 index.html에 넘겨줍시다.
그럼 이제 index.html로 이동해서 form태그로 검색창을 구현해주어야 합니다.
이렇게 빈 폼을 구현해줍니다.
그럼 이제 제출버튼을 누르는 순간 home함수로 post요청이 오게 됩니다. 그게 적절한지만 판단하고 적절하다고 한다면 아까 만들어놓은 Url에 get 요청을 보내도록 하면 됩니다.
그건 다시 views.py로 가서 home함수에 나머지 부분을 채워넣어주면 됩니다.
바로 이렇게요.
POST로 request된 SearchForm을 form 변수에 담아주고
검색한 단어를 갖고와서 쿼리에 넣어주어야 하기 때문에
searchword라는 변수를 만들고 그 안에 받은 요청에서 어떤 단어를 검색했는지를 찾아 담아준다.
그래서 form이 유효하면 search.html을 띄우면 됩니다.
일단 search.html에는 그냥 {{resdata}}만 써두고 runserver하면
그럼 맨 밑에
이렇게 생긴 녀석이 만들어집니다.
실제로 검색을 하면, hello라는 글자가 포함된 영화들이 쭉 뜨게 됩니다. 한국이라고 검색하면 한국이라는 글자가 포함된 영화들이 뜨게 되고요.
근데 search.html을 {{resdata}} 로만 써놨기 때문에 이렇게 어지럽게 표시되긴 합니다. 이걸 좀 정제해줘야 합니다. 저 어지러운 글자들의 나열을 자세히 보다보면 우리가 필요한건 results 뿐이기 때문입니다.
이것도 json이니까 파이썬문법으로 바꿔주는 과정이 필요하고.
obj=json.loads(resdata) 코드를 추가해주고
obj = obj['results'] 라는 코드도 추가해줍니다.
물론 search.html에도 {{obj}} 라고 코드를 변경해줘야 합니다.
그러면
영화 각각의 정보를 갖고 있는 객체들의 리스트만 깔끔하게 뜹니다.
이제 search.html을 조금 더 다듬어봅시다.
이렇게요.
이제 Bootstrap으로 웹사이트를 좀 꾸며봅시다.
템플릿을 씌우는 작업을 진행하면 됩니다.
Bethany로 진행을 하신다고 합니다.