[Watcha Classic] 메인 페이지 구현 (한 줄)

이태권 (Taekwon Lee)·2022년 6월 28일
0

[Project] Watcha Classic

목록 보기
2/6

4. 메인 페이지 구현 (1)

원래 구현한 건 6월 27일인데 시간 부족으로 오늘(28일) 작성하였다...

🎉 왓챠 클래식 한 줄 구현 성공

드디어 프론트(이하 FE)와 통신하여 왓챠 클래식의 첫 페이지를 구현하였다.

0:8000/films?genre=드라마

(위 캡처 사진은 FE의 목데이터가 아니라
실제 MySQL의 DB에 있는 데이터를 보내주어서 작성하였다.)

📝 메인 페이지 View 코드

query parameter

  • RESTful API에서 query paramter 를 활용하였다.
  • query는 말 그대로 질문인데, ?를 활용하여 원하는 조건을 넣어서 구현할 수 있다.
  • 아래의 경우는, query parameter를 활용하여 영화 중 원하는 genre를 입력하는 코드이다.
from django.http      import JsonResponse
from django.views     import View

from films.models import Film

class FilmMainView(View):
    def get(self, request):
            genre          = request.GET.get('genre')
            genre_of_films = Film.objects.filter(genres__name = genre)

        try:
            results = [{
                'id'               : film.id,
                'name'             : film.name,
                'release_date'     : film.release_date.year,
                'image_url'        : film.image_url,
                'country'          : [country.name for country in film.countries.all()],                 
                'running_time_min' : film.running_time_min,
                } for film in genre_of_films[:10]],
            return JsonResponse({'results': results}, status = 201)
        except KeyError:
            return JsonResponse({'message': 'KEY_ERROR'}, status = 400)
  • release_dateDateFieldYYYY-MM-DD 형태인데 .year만 붙이면 연도만 나온다!

🖥 HTTP 요청/응답 확인

  • 예시로 genre 중 드라마인 영화를 불러 왔다.

서버 반응

무사히 status code 201이 떴다!
(알고 보니 201Created라서 200으로 바꿔줘야 한다.)

[28/Jun/2022 16:40:30] "GET /films?genre=%EB%93%9C%EB%9D%BC%EB%A7%88&country=%EB%AF%B8%EA%B5%AD&time=100 HTTP/1.1" 201 11588

❗️ 문제점

  1. 이제 장르가 드라마인 것뿐만 아니라 국가가 미국 등 여러 줄을 구현하고 싶은데 어떻게 해야 할까?
  2. 지금은 id 순인 것 같은데 다른 것으로 정렬을 할 수는 없을까?
profile
(Backend Dev.) One step at a time

0개의 댓글