원래 구현한 건 6월 27일인데 시간 부족으로 오늘(28일) 작성하였다...
드디어 프론트(이하 FE)와 통신하여 왓챠 클래식의 첫 페이지를 구현하였다.
0:8000/films?genre=드라마
(위 캡처 사진은 FE의 목데이터가 아니라
실제 MySQL의 DB에 있는 데이터를 보내주어서 작성하였다.)
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_date
는 DateField
라 YYYY-MM-DD
형태인데 .year
만 붙이면 연도만 나온다!genre
중 드라마인 영화를 불러 왔다.무사히 status code 201
이 떴다!
(알고 보니 201
은 Created
라서 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
id
순인 것 같은데 다른 것으로 정렬을 할 수는 없을까?