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_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 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 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 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_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_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 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 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 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_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 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): # 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)
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)
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() parsed_new_toy = parser.parse(stream_for_new_toy) print(parsed_new_toy) new_toy_serializer = ToySerializer(data=parsed_new_toy) if new_toy_serializer.is_valid(): toy3 = new_toy_serializer.save() print(toy3.name)
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)
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)