TypeError ...在Django中不能进行JSON序列化,在回溯中没有引用我的代码

ruarlubt  于 2023-02-17  发布在  Go
关注(0)|答案(1)|浏览(101)

注意,我的代码没有列出,都是库。

Traceback (most recent call last):
  File "/root/env/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/root/env/lib/python3.9/site-packages/django/utils/deprecation.py", line 138, in __call__
    response = self.process_response(request, response)
  File "/root/env/lib/python3.9/site-packages/django/contrib/sessions/middleware.py", line 59, in process_response
    request.session.save()
  File "/root/env/lib/python3.9/site-packages/django/contrib/sessions/backends/db.py", line 82, in save
    obj = self.create_model_instance(data)
  File "/root/env/lib/python3.9/site-packages/django/contrib/sessions/backends/db.py", line 69, in create_model_instance
    session_data=self.encode(data),
  File "/root/env/lib/python3.9/site-packages/django/contrib/sessions/backends/base.py", line 94, in encode
    return signing.dumps(
  File "/root/env/lib/python3.9/site-packages/django/core/signing.py", line 150, in dumps
    return TimestampSigner(key, salt=salt).sign_object(
  File "/root/env/lib/python3.9/site-packages/django/core/signing.py", line 228, in sign_object
    data = serializer().dumps(obj)
  File "/root/env/lib/python3.9/site-packages/django/core/signing.py", line 125, in dumps
    return json.dumps(obj, separators=(",", ":")).encode("latin-1")
  File "/usr/lib/python3.9/json/__init__.py", line 234, in dumps
    return cls(
  File "/usr/lib/python3.9/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.9/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python3.9/json/encoder.py", line 179, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '

Exception Type: TypeError at /financialreconciliation/
Exception Value: Object of type AllCompany is not JSON serializable

我通过URL知道了这个错误的视图。我在视图中做了一个二进制搜索,试图用print语句找到它出现的那一行,但是我没有找到它。我一直用print语句返回,它们都显示了。
然后我使用return HttpResponse()进行了搜索,最后发现问题是::

request.session['variance_dict'] = variance_dict

事实上,字典里有AllCompany对象。
我还在学习模型-视图-控制器的控制部分,所以我没有意识到字典的更新直到返回时才会发生。这也可能是python的问题。我不确定是什么原因导致的。但是,我认为其他人可能在我的位置上,这可能会帮助他们。

d7v8vwbk

d7v8vwbk1#

目前,我的解决方案是不把模型对象放在会话中,但是,可能有一种方法可以做到这一点,或者有一种更好的解决方案,所以我希望其他人能给予更全面的答案/解释。

相关问题