Esempio n. 1
0
 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)
Esempio n. 2
0
    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
        }
Esempio n. 3
0
 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) 
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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)
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 10
0
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
Esempio n. 11
0
    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)
Esempio n. 12
0
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)
Esempio n. 13
0
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)
Esempio n. 14
0
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
            )
Esempio n. 15
0
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)
Esempio n. 16
0
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)
Esempio n. 17
0
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)
Esempio n. 18
0
           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)
Esempio n. 20
0
 def get(self, request, pk, format=None):
     toy = self.get_object(pk)
     serializer = ToySerializer(toy)
     return Response(serializer.data)
Esempio n. 21
0
 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)
Esempio n. 22
0
 def get(self, request, format=None):
     toys = Toy.objects.all()
     serializer = ToySerializer(toys, many=True)
     return Response(serializer.data)
Esempio n. 23
0
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)