Пример #1
0
 def get(self, request):
     """
         获取所有图书
     """
     # 1、查询图书表获取所有图书对象
     books = BookInfo.objects.all()
     # 2.初始化 生成序列化器对象,因为这里books是多个对象,所以要加many=True
     ser = BookSerializer(books, many=True)
     # 3.使用序列化器对象的data方法获取序列化后的结果,并返回
     return JsonResponse({'book_list': ser.data})
Пример #2
0
 def get(self, request, pk):
     """
     获取单一图书数据
     """
     # 1、根据pk值查询图书对象
     try:
         book=BookInfo.objects.get(id=pk)
     except:
         return JsonResponse({'error': '错误的id值'})
     ser = BookSerializer(book)
     return JsonResponse({'book': ser.data})
Пример #3
0
 def retrieve(self, request, pk):
     """
     获取单一图书数据
     :param request:
     :param pk:
     :return:
     """
     # 1、根据pk值查询图书对象
     try:
         book = BookInfo.objects.get(id=pk)
     except:
         return Response({'error': '错误的id值'})
     ser = BookSerializer(book)
     return Response({'book': ser.data})
Пример #4
0
 def create(self, request):
     """
     保存图书
     :param request:
     :return:
     """
     # 1.获取保存的图书数据
     data = request.data
     # 2.通过反序列化获取前端提交的json数据
     ser = BookSerializer(data=data)
     # 3.验证图书字段,验证不通过直接返回错误信息
     ser.is_valid(raise_exception=True)
     # 4.调用序列化器中封装的保存方法create
     ser.save()
     # 5.序列化返回操作,data方法即是获取序列化后的字典数据
     return Response(ser.data)
Пример #5
0
 def update(self, request, pk):
     """
     更新图书信息
     :param request:
     :param pk:
     :return:
     """
     # 1.获取要保存的图书数据
     data = request.data
     try:
         book = BookInfo.objects.get(pk=pk)
     except:
         return Response({'error': '书籍不存在'})
     # 2.通过反序列化验证图书字段
     ser = BookSerializer(book, data=data)
     ser.is_valid(raise_exception=True)
     # 3.调用序列化器中封装的update更新图书方法
     ser.save()
     # 4.序列化返回操作(data即是序列化后的字典数据)
     return Response(ser.data)
Пример #6
0
    def post(self, request):
        """
            保存图书
        """
        """
            # 1、获取保存的图书数据
            data = request.body.decode()
            data_dict = json.loads(data)
            # # 2、验证图书数据字段
            btitle = data_dict.get('btitle')
            bpub_date = data_dict.get('bpub_date')
            # if btitle is None or bpub_date is None:
            #     return JsonResponse({'error': '缺少必要数据'})
            ser = BookSerializer(data=data_dict)
            # 有异常的话,使用raise_exception直接返回异常信息
            ser.is_valid(raise_exception=True)
            # 验证成功后通过ser.validated_data获取验证后的数据
            print(ser.validated_data)
            # 3、保存图书
            book = BookInfo.objects.create(btitle=btitle, bpub_date=bpub_date)
            # 4、返回保存后的图书数据
            ser = BookSerializer(book)
            return JsonResponse({'book_list': ser.data})
        """

        # 1.获取保存的图书数据
        json_dict = json.loads(request.body.decode())
        # 2.通过反序列化获取前端提交的json数据
        ser = BookSerializer(data=json_dict)
        # 3.验证图书字段,验证不通过直接返回错误信息
        ser.is_valid(raise_exception=True)
        # # 4.增加图书信息
        # book = BookInfo.objects.create(btitle=ser.validated_data['btitle'], bpub_date=ser.validated_data['bpub_date'])
        # # 5.序列化返回数据
        # ser = BookSerializer(book)
        # 4.调用序列化器中封装的保存方法create
        ser.save()
        # 5.序列化返回操作,data方法即是获取序列化后的字典数据
        return JsonResponse(ser.data)
Пример #7
0
 def put(self, request, pk):
     """
      更新图书信息
     """
     # # 1.判断书籍是否存在
     # try:
     #     book = BookInfo.objects.get(pk=pk)
     # except BookInfo.DoesNotExist:
     #     return JsonResponse({'error': '书籍不存在'})
     # json_dict = json.loads(request.body.decode())
     #
     # # 方法一:
     # # book.btitle = json_dict.get('btitle')
     # # book.bpub_date = datetime.strptime(json_dict.get('bpub_date'), '%Y-%m-%d').date()
     # # book.save()
     # # 方法二:
     # # todo 此处可以通过拆包的形式进行赋值,减少代码量.另外注意更新操作是无返回值的
     # # 因为字典类型数据 'btitle': 'python' 经**转换后就会转换为'btitle'='python'的格式
     # # BookInfo.objects.filter(pk=pk).update(**json_dict)
     # # book = BookInfo.objects.get(pk=pk)
     # #
     # ser = BookSerializer(book)
     #
     # return JsonResponse({'book': ser.data})
     # 1.获取要保存的图书数据
     json_dict = json.loads(request.body.decode())
     try:
         book = BookInfo.objects.get(pk=pk)
     except:
         return JsonResponse({'error': '书籍不存在'})
     # 2.通过反序列化验证图书字段
     ser = BookSerializer(book, data=json_dict)
     ser.is_valid(raise_exception=True)
     # 3.调用序列化器中封装的update更新图书方法
     ser.save()
     # 4.序列化返回操作(data即是序列化后的字典数据)
     return JsonResponse(ser.data)