def put(self, request, pk, format=None): toy = self.get_object(pk) serializer = ToySerializer(toy, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def setUp(self): self.toy_release_date = timezone.make_aware( datetime.now(), timezone.get_current_timezone()) self.toy1 = Toy(name='Snoopy talking action figure', description='Snoopy speaks five languages', release_date=self.toy_release_date, toy_category='Action figures', was_included_in_home=True) self.toy1.save() self.toy2_release_date = timezone.make_aware( datetime.now(), timezone.get_current_timezone()) self.toy2 = Toy(name='Hawaiian Barbie', description='Barbie loves Hawaii', release_date=self.toy2_release_date, toy_category='Doll', was_included_in_home=True) self.toy2.save() self.serializer_for_toy1 = ToySerializer(self.toy1) self.serializer_for_toy2 = ToySerializer(self.toy2) self.json_string_for_new_toy = '{"name":"Clash Royale play set",' \ '"description":"6 figures from Clash Royale", ' \ '"release_date":"2017-10-09T12:10:00.776594Z",' \ '"toy_category":"Playset","was_included_in_home":false}' # set client API self.client = APIClient() # initiation data for post self.data_post = [ { "name": "Skater ska", "description": "Hero skater", "release_date": self.toy1.release_date.isoformat(), "toy_category": "Action figures", "was_included_in_home": False }, { "name": "PvZ 2 puzzle", "description": "Plants vs Zombies 2 puzzle", "toy_category": "Puzzle", "was_included_in_home": False, "release_date": self.toy1.release_date.isoformat() }, ] self.data_toy1_candidate = { "description": "Plants vs Zombies 3 puzzle", "name": "PvZ 3 puzzle", "pk": 1, "release_date": self.toy1.release_date.isoformat(), "toy_category": "Puzzles & Games", "was_included_in_home": False }
def test_create_from_json(self): json_bytes_for_new_toy = bytes(self.json_string_for_new_toy, encoding="UTF-8") stream_for_new_toy = BytesIO(json_bytes_for_new_toy) parser = JSONParser() parsed_new_toy = parser.parse(stream_for_new_toy) new_toy_serializer = ToySerializer(data=parsed_new_toy) if new_toy_serializer.is_valid(): toy3 = new_toy_serializer.save() self.assertEqual(toy3.name, 'Clash Royale play set')
def toy_detail(request, pk): try: toy = Toy.objects.get(pk=pk) except Toy.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': toy_serializer = ToySerializer(toy) return Response(toy_serializer.data)
def toy_detail(request, pk): try: toy = Toy.objects.get(pk=pk) except Toy.DoesNotExist: return HttpResponse(status=status.HTTP_404_NOT_FOUND) # por get solo devuelve uno if request.method == 'GET': toy_serializer = ToySerializer(toy) return JSONResponse(toy_serializer.data) # actualizar lo mismo que post elif request.method == 'PUT': toy_data = JSONParser().parse(request) toy_serializer = ToySerializer(toy, data=toy_data) if toy_serializer.is_valid(): toy_serializer.save() return JSONResponse(toy_serializer.data) return JSONResponse(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST) # eliminar elif request.method == 'DELETE': toy.delete() return HttpResponse(status=status.HTTP_204_NO_CONTENT)
def toy_detail(request, pk): try: toy = Toy.objects.get(pk=pk) except Toy.DoesNotExist: return HttpResponse(status=status.HTTP_404_NOT_FOUND) # Return a single toy's data if request.method == 'GET': toy_serializer = ToySerializer(toy) return JSONResponse(toy_serializer.data) # Update toy's data elif request.method == 'PUT': toy_data = JSONParser().parse(request) toy_serializer = ToySerializer(toy, data=toy_data) if toy_serializer.is_valid(): toy_serializer.save() return JSONResponse(toy_serializer.data) return JSONResponse(toy_serializer.errors, \ status=status.HTTP_400_BAD_REQUEST) # Delete toy elif request.method == 'DELETE': toy.delete() return HttpResponse(status=status.HTTP_204_NO_CONTENT)
def toy_detail(request, pk): try: toy = Toy.objects.get(pk=pk) except Toy.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': toy_serializer = ToySerializer(toy) return Response(toy_serializer.data, status=status.HTTP_200_OK) elif request.method == 'PUT': toy_serializer = ToySerializer(toy, data=request.data) if toy_serializer.is_valid(): toy_serializer.save() return Response(toy_serializer.data) return Response(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': toy.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def toy_list(request): if request.method == 'GET': # $ http :8000/toys/ # $ curl -iX GET localhost:8000/toys/ toys = Toy.objects.all() toys_serializer = ToySerializer(toys, many=True) return Response(toys_serializer.data) elif request.method == 'POST': # $ http POST :8000/toys/ name="Sokoban" \ # description="a mobile game" \ # toy_category="Electronics" \ # was_included_in_home=false \ # release_date="2017-03-12T01:01:00.656665Z" # # $ curl -iX POST -H "Content-Type: application/json" -d # '{"name":"Tomb raider","description":"a mobile game", # "toy_category":"Electronics","was_included_in_home":"false", # "release_date":"2016-05-25T01:01:00.652465Z"}' localhost:8000/toys/ toy_serializer = ToySerializer(data=request.data) if toy_serializer.is_valid(): toy_serializer.save() return Response(toy_serializer.data, status=status.HTTP_201_CREATED) return Response(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def toy_list(request): if request.method == 'GET': toys = Toys.objects.all() toy_serial = ToySerializer(toys, many=True) return Response(toy_serial.data) elif request.method == 'POST': toy_serial = ToySerializer(data=request.data) if toy_serial.is_valid(): toy_serial.save() return Response(toy_serial.data, status=status.HTTP_201_CREATED) return Response(toy_serial.errors, status=status.HTTP_400_BAD_REQUEST)
def toy_detail(request, pk): try: toy = Toy.objects.get(pk=pk) except Toy.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': # $ http :8000/toys/1 # $ curl -iX GET localhost:8000/toys/1 toy_serializer = ToySerializer(toy) return Response(toy_serializer.data) elif request.method == 'PUT': # Basically the same as `POST` but with 'pk' to update specific one # $ http PUT :8000/toys/4 \ # name="Sokoban" \ # description="a mobile game" \ # toy_category="Electronics" \ # was_included_in_home=false \ # release_date="2017-03-12T09:09:00.656665Z" # curl -iX PUT -H "Content-Type: application/json" # -d '{"name":"Tombraider","description":"a mobile game", # "toy_category":"Electronics","was_included_in_home":"false", # "release_date":"2016-05-25T01:01:00.652465Z"}' localhost:8000/toys/5 toy_serializer = ToySerializer(toy, data=request.data) if toy_serializer.is_valid(): toy_serializer.save() return Response(toy_serializer.data) return Response(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': # $ http DELETE :8000/toys/3 # $ curl -iX DELETE localhost:8000/toys/3 toy.delete() return Response(status=status.HTTP_204_NO_CONTENT) elif request.method == 'PATCH': # Use this if you just want to update a specific field. # Test commands # $ http PATCH :8000/toys/4 name='..' # $ curl -iX -H "..json' -d '{"name":".."}' localhost:8000/toys/4 pass
def toy_list(request): if request.method == 'GET':, toys = Toy.objects.all() toys_serializer = ToySerializer(toys, many=True) return JSONResponse(toys_serializer.data) elif request.method == 'POST': toy_data = JSONParser().parse(request) toy_serializer = ToySerializer(data=toy_data) if toy_serializer.is_valid(): toy_serializer.save() return JSONResponse(toy_serializer.data, status=status.HTTP_201_CREATED) return JSONResponse(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def toy_list(request): # to show/list all the toys if request.method == 'GET': toys = Toy.objects.all() toys_serializer = ToySerializer(toys, many=True) return JSONResponse(toys_serializer.data) elif request.method == 'POST': toy_data = JSONParser().parse(request) # object->json toy_serializer = ToySerializer(data=toy_data) # json-> dict-like if toy_serializer.is_valid(): toy_serializer.save() return JSONResponse(toy_serializer.data, \ status=status.HTTP_201_CREATED) return JSONResponse(toy_serializer.errors, \ stratus=status.HTTP_400_BAD_REQUEST)
def toy_detail(request, pk): try: toy = Toy.objects.get(pk=pk) except Toy.DoesNotExist: return HttpResponse(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': toy_serializer = ToySerializer(toy) return Response(toy_serializer.data) elif request.method == 'PUT': # toy_data = JSONParser().parse(request) # toy_serializer = ToySerializer(toy, data=toy_data) # 序列化器传入一个对象和处ID以外的其他字段数据 toy_serializer = ToySerializer(toy, data=request.data) if toy_serializer.is_valid(): toy_serializer.save() return Response(toy_serializer.data) return Response(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': toy.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def toy_list(request): if request.method == 'GET': toys = Toy.objects.all() toys_serializer = ToySerializer(toys, many=True) return Response(toys_serializer.data) elif request.method == 'POST': # we passed request.data as the data argument to create a new ToySerializer instance toy_serializer = ToySerializer(data=request.data) if toy_serializer.is_valid(): toy_serializer.save() return Response( toy_serializer.data, status=status.HTTP_201_CREATED ) return Response( toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST )
def toy_list(request): if request.method == 'GET': toys = Toy.objects.all() toys_serializer = ToySerializer(toys, many=True) return Response(toys_serializer.data) elif request.method == 'POST': # 根据请正文中包含的json数据创建新的toy。 # 解析json并保存到toy_data # toy_data = JSONParser().parse(request) # 创建toy_serializer实例 toy_serializer = ToySerializer(data=request.data) # 确认toy实例是否有效,如果有效则保存 if toy_serializer.is_valid(): toy_serializer.save() return Response(toy_serializer.data, status=status.HTTP_201_CREATED) return Response(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def toy_detail(request, pk): try: toy = Toy.objects.get(pk=pk) except Toy.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': toy_serializer = ToySerializer(toy) return Response(toy_serializer.data) elif request.method == 'PUT': # we passed toy as the first argument and request.data as the data argument to create a # new ToySerializer instance: toy_serializer = ToySerializer(toy, data=request.data) if toy_serializer.is_valid(): toy_serializer.save() return Response(toy_serializer.data) return Response( toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': toy.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def toy_list(request): # metodo get if request.method == 'GET': # todos los datos de la base de datos toys = Toy.objects.all() # todos los pasas por el serializer toys_serializer = ToySerializer(toys, many=True) return JSONResponse(toys_serializer.data) # metodo post es para crear elif request.method == 'POST': # primero paso la peticion a json toy_data = JSONParser().parse(request) # lo mismo toy_serializer = ToySerializer(data=toy_data) # verificar la validez if toy_serializer.is_valid(): toy_serializer.save() return JSONResponse(toy_serializer.data, status=status.HTTP_201_CREATED) return JSONResponse(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
description='Barbie loves Hawaii', release_date=toy_release_date, toy_category='Dolls', was_included_in_home=True) toy2.save() print(toy1.pk) print(toy1.name) print(toy1.created) print(toy1.was_included_in_home) print(toy2.pk) print(toy2.name) print(toy2.created) print(toy2.was_included_in_home) serializer_for_toy1 = ToySerializer(toy1) print(serializer_for_toy1.data) serializer_for_toy2 = ToySerializer(toy2) print(serializer_for_toy2.data) json_renderer = JSONRenderer() toy1_rendered_into_json = json_renderer.render(serializer_for_toy1.data) toy2_rendered_into_json = json_renderer.render(serializer_for_toy2.data) print(toy1_rendered_into_json) print(toy2_rendered_into_json) json_string_for_new_toy = '{"name":"Clash Royale play set","description":"6 figures from Clash Royale", "release_date":"2017-10-09T12:10:00.776594Z","toy_category":"Playset","was_included_in_home":false}' json_bytes_for_new_toy = bytes(json_string_for_new_toy, encoding="UTF-8") stream_for_new_toy = BytesIO(json_bytes_for_new_toy) parser = JSONParser()
toy_release_date = timezone.make_aware(datetime.now(), timezone.get_current_timezone()) toy1 = Toy(name='Snoopy talking action figure', description='Snoopy speaks five languages', release_date=toy_release_date, toy_category='Action figures', was_included_in_home=False) toy1.save() toy2 = Toy(name='Hawaiian Barbie', description='Barbie loves Hawaii', release_date=toy_release_date, toy_category='Dolls', was_included_in_home=True) toy2.save() # right now toy1 and toy2 are toy objects print(type(toy1)) # print(toy1.pk) # print(toy1.name) # print(toy1.created) # print(toy1.was_included_in_home) # print(toy2.pk) # print(toy2.name) # print(toy2.created) # print(toy2.was_included_in_home) # then we call serializer to serialize them serializer_for_toy1 = ToySerializer(toy1) print(type(serializer_for_toy1)) print(serializer_for_toy1.data)
def get(self, request, pk, format=None): toy = self.get_object(pk) serializer = ToySerializer(toy) return Response(serializer.data)
def post(self, request, format=None): serializer = ToySerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get(self, request, format=None): toys = Toy.objects.all() serializer = ToySerializer(toys, many=True) return Response(serializer.data)
class DogSerializer(serializers.ModelSerializer): toys = ToySerializer(many=True, read_only=True) class Meta: model = Dog fields = '__all__'
was_included_in_home=True) toy2.save() # right now toy1 and toy2 are toy objects # print(toy1.pk) # print(toy1.name) # print(toy1.created) # print(toy1.was_included_in_home) # print(toy2.pk) # print(toy2.name) # print(toy2.created) # print(toy2.was_included_in_home) print(type(toy1)) # <class 'toys.models.Toy'> # then we call serializer to serialize them into a somewhat dict-like object serializer_for_toy1 = ToySerializer(toy1) print(type(serializer_for_toy1)) #<class 'toys.serializers.ToySerializer'> print(serializer_for_toy1.data) serializer_for_toy2 = ToySerializer(toy2) print(serializer_for_toy2.data) # turn into json json_renderer = JSONRenderer() toy1_rendered_into_json = json_renderer.render(serializer_for_toy1.data) toy2_rendered_into_json = json_renderer.render(serializer_for_toy2.data) print(toy1_rendered_into_json) print(toy2_rendered_into_json) ### # Now the other way around: deserialize
return Response(toys_serializer.data) elif request.method == 'POST': toy_serializer = ToySerializer(data=request.data) if toy_serializer.is_valid(): toy_serializer.save() return Response(toy_serializer.data, status=status.HTTP_201_CREATED) return Response(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST) @api_view(['GET', 'PUT', 'DELETE']) def toy_detail(request, pk): try: toy = Toy.objects.get(pk=pk) except Toy.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': toy_serializer = ToySerializer(toy) return Response(toy_serializer.data) elif request.method == 'PUT': toy_serializer = ToySerializer(toy, data=request.data) if toy_serializer.is_valid(): toy_serializer.save() return Response(toy_serializer.data) return Response(toy_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': toy.delete() return Response(status=status.HTTP_204_NO_CONTENT)