灰太狼爱上美羊羊 2021-12-20 23:57 采纳率: 66.7%
浏览 31
已结题

django3.2.6 异常,实在不知道啥原因了,求解,如何解决?

问题是出在这行:
        
**product = product_serializers.save()**

```python
class productAddAPIView(APIView):
    def post(self, request):
        product_serializers = productModelSerializers(data=request.data)
        if product_serializers.is_valid(raise_exception=True):
            product_info = product_serializers.save()
            return ApiResponse(results=product_info )


```python
class product(models.Model):
    product_name = models.CharField(max_length=50, verbose_name='产品名称')

    class Meta:
        db_table = "product"

class productModelSerializers(serializers.ModelSerializer):
    class Meta:
        model = product
        fields = '__all__'


调用接口后报错:

Traceback (most recent call last):
File "D:\Program Files\Python\Python37\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "D:\Program Files\Python\Python37\lib\site-packages\django\core\handlers\base.py", line 204, in get_response
response = response.render()
File "D:\Program Files\Python\Python37\lib\site-packages\django\template\response.py", line 105, in render
self.content = self.rendered_content
File "D:\Program Files\Python\Python37\lib\site-packages\rest_framework\response.py", line 70, in rendered_content
ret = renderer.render(self.data, accepted_media_type, context)
File "D:\Program Files\Python\Python37\lib\site-packages\rest_framework\renderers.py", line 103, in render
allow_nan=not self.strict, separators=separators
File "D:\Program Files\Python\Python37\lib\site-packages\rest_framework\utils\json.py", line 25, in dumps
return json.dumps(*args, **kwargs)
File "D:\Program Files\Python\Python37\lib\json_init
.py", line 238, in dumps
**kw).encode(obj)
File "D:\Program Files\Python\Python37\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "D:\Program Files\Python\Python37\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "D:\Program Files\Python\Python37\lib\site-packages\rest_framework\utils\encoders.py", line 67, in default
return super().default(obj)
File "D:\Program Files\Python\Python37\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.class.name} '
TypeError: Object of type product is not JSON serializable

  • 写回答

2条回答 默认 最新

  • 关注
    class productAddAPIView(APIView):
        def post(self, request):
            product_serializers = productModelSerializers(data=request.data)
            if product_serializers.is_valid(raise_exception=True):
                try:
                    # 如果你想返回操作状态,加上判断报错,报错即未成功,为报错即成功,字典中还可以加上其他数据
                    # save()后会返回一个model对象,对象是不能够json序列化的,所以不能直接使用save返回的对象当做json返回前端
                    product_serializers.save()
                    
                    product_info = {"code":"200","data":"操作成功"}
                except Exception as e:
                    product_info = {"code": "2001","data":f"操作失败{e}"}
    
                return ApiResponse(results=product_info )
    

    上面这段代码可以帮你,有帮助请点击右上角的采纳,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月21日
  • 修改了问题 12月21日
  • 创建了问题 12月20日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?