def put(self, request, id): genre = self.get_object(id) if isinstance( genre, Response) and genre.status_code == status.HTTP_404_NOT_FOUND: return Response(status=status.HTTP_404_NOT_FOUND) serializer = GenreSerializer(genre, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_202_ACCEPTED) return Response(status=status.HTTP_400_BAD_REQUEST)
def get(self, request): id = request.query_params.get('genre_id', None) if id: genre = self.get_object(id) serializer = GenreSerializer(genre) else: genre = Genre.objects.all() serializer = GenreSerializer(genre, many=True) return Response({ 'data': serializer.data, 'success': True }, status=status.HTTP_200_OK)
def put(self, request, format=None): id = request.data.get('genre_id', None) genre = self.get_object(id) if genre: serializer = GenreSerializer(genre, data=request.data) if serializer.is_valid(): serializer.save() return Response({ 'data': serializer.data, 'success': True }, status=status.HTTP_200_OK) return Response({ 'error': serializer.errors, 'success': False }, status=status.HTTP_400_BAD_REQUEST)
def get(self, request, id): genre = self.get_object(id) if isinstance( genre, Response) and genre.status_code == status.HTTP_404_NOT_FOUND: return Response(status=status.HTTP_404_NOT_FOUND) serializer = GenreSerializer(genre) return Response(serializer.data)
def test_get_one_genre(self): """ This test ensures that genre added in the setUp method exist when we make a GET request to the /genres/1 endpoint """ response = self.client.get('/genres/1') expected = Genre.objects.get(id=1) serialized = GenreSerializer(expected) self.assertEqual(response.data, serialized.data) self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_get_all_genres(self): """ This test ensures that all genres added in the setUp method exist when we make a GET request to the /genres endpoint """ response = self.client.get('/genres') expected = Genre.objects.all() serialized = GenreSerializer(expected, many=True) self.assertEqual(response.data, serialized.data) self.assertEqual(response.status_code, status.HTTP_200_OK)
class CustomRegisterSerializer(RegisterSerializer): nickname = serializers.CharField(required=True, max_length=10) date_of_birth = models.DateTimeField(blank=True, null=True) like_genres = GenreSerializer(many=True) def get_cleaned_data(self): data_dict = super().get_cleaned_data() data_dict['nickname'] = self.validated_data.get('nickname', '') data_dict['date_of_birth'] = self.validated_data.get('date_of_birth', '') data_dict['like_genres'] = self.validated_data.get('like_genres', '') return data_dict
def post(self, request, format=None): serializer = GenreSerializer(data=request.data) if serializer.is_valid(): try: serializer.save() except: return Response({ 'error': serializer.errors, 'success': False }, status=status.HTTP_400_BAD_REQUEST) return Response({ 'data': serializer.data, 'success': True }, status=status.HTTP_201_CREATED) return Response({ 'error': serializer.errors, 'success': False }, status=status.HTTP_400_BAD_REQUEST)
def genre_list(request): if request.method == 'GET': genres = Genre.objects.all() serializer = GenreSerializer(genres, many=True) return Response(serializer.data) elif request.method == 'POST': serializer = GenreSerializer(data=request.data) if serializer.is_valid(): serializer.save() # save() will call serializer's create() method return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def genre_data(request): res = requests.get( "https://api.themoviedb.org/3/genre/movie/list?api_key=669e119f2e7f069615e4be9aa1ced416&language=ko" ) data = res.json()["genres"] serializer = GenreSerializer(data=data, many=True) try: serializer.is_valid(raise_exception=True) except: logging.error(traceback.format_exc()) if serializer.is_valid(): serializer.save() return Response(serializer.data)
def topGenreByYearView(request): year = request.GET.get('year') if not year: return Response({'message': 'Required `year` query parameter'}, status=400) try: year = int(year) except: return Response({'message': 'Unexpected year, must be 4 digits'}, status=400) start = date(int(year) - 1, 12, 31) end = date(int(year) + 1, 1, 1) top_genre = Genre.objects.filter( movie__release_date__gt=start, movie__release_date__lt=end).annotate( c=Count('name')).order_by('-c').first() if top_genre: serializer = GenreSerializer(top_genre, context={'request': request}) return Response(serializer.data) else: return Response({'message': 'No top genre found'}, status=404)
def genre_detail(request, pk): try: genre = Genre.objects.get(pk=pk) except Genre.DoesNotExist: ''' What is DoesNotExist ? This exception is raised by the ORM in a couple places, for example by QuerySet.get() when an object is not found for the given query parameters. https://docs.djangoproject.com/en/3.0/ref/models/instances/#django.db.models.Model.DoesNotExist ''' return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': serializer = GenreSerializer(genre) return Response(serializer.data) elif request.method == 'PUT': serializer = GenreSerializer(genre, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_202_ACCEPTED) return Response(status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': genre = genre.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def genre_list(request): qs = Genre.objects.all() serial = GenreSerializer(qs, many=True) return Response(serial.data, status=200)
class UserSerializer(serializers.ModelSerializer): like_genres = GenreSerializer(many=True) class Meta: model = User fields = ('id', 'username', 'password', 'like_genres')
def genres_entire(request): genres = Genre.objects.all() serializer = GenreSerializer(genres, many=True) return JsonResponse(serializer.data, safe=False)
def post(self, request): serializer = GenreSerializer(data=request.data) if serializer.is_valid(): serializer.save() # save() will call serializer's create() method return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get(self, request): genres = Genre.objects.all() serializer = GenreSerializer(genres, many=True) return Response(serializer.data)
class UserSerializer2(serializers.ModelSerializer): like_genres = GenreSerializer(many=True) class Meta: model = User fields = '__all__'