加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

django错误 ValueError: Circular reference detected 解决方法

发布时间:2020-12-15 17:13:52 所属栏目:大数据 来源:网络整理
导读:django 错误:ValueError: Circular reference detected,具体错误信息: File?"C:Python27MyDjangojianzhi_002jianzhi_appviews.py",?line?418,?in?wx_get_job_detail????return?HttpResponse(json.dumps({'message':?message,?'data':?detail_data}))

django 错误:ValueError: Circular reference detected,具体错误信息:

File?"C:Python27MyDjangojianzhi_002jianzhi_appviews.py",?line?418,?in?wx_get_job_detail
????return?HttpResponse(json.dumps({'message':?message,?'data':?detail_data}))
File?"C:Python27libjson__init__.py",?line?244,?in?dumps
????return?_default_encoder.encode(obj)
File?"C:Python27libjsonencoder.py",?line?207,?in?encode
????chunks?=?self.iterencode(o,?_one_shot=True)
File?"C:Python27libjsonencoder.py",?line?270,?in?iterencode
????return?_iterencode(o,?0)
ValueError:?Circular?reference?detected

错误意思:存在循环引用。

代码重现:

import?json

a?=?b?=?c?=?{}
#?将b?c?存到?a
a['b']?=?b
a['c']?=?c
json.dumps(a)

错误提示:

ValueError????????????????????????????????Traceback?(most?recent?call?last)
<ipython-input-5-2f50cf32d976>?in?<module>()
---->?1?json.dumps(a)

/usr/lib/python2.7/json/__init__.pyc?in?dumps(obj,?skipkeys,?ensure_ascii,?check_circular,?allow_nan,?cls,?indent,?separators,?encoding,?default,?sort_keys,?**kw)
????241?????????cls?is?None?and?indent?is?None?and?separators?is?None?and
????242?????????encoding?==?'utf-8'?and?default?is?None?and?not?sort_keys?and?not?kw):
-->?243?????????return?_default_encoder.encode(obj)
????244?????if?cls?is?None:
????245?????????cls?=?JSONEncoder

/usr/lib/python2.7/json/encoder.pyc?in?encode(self,?o)
????205?????????#?exceptions?aren't?as?detailed.??The?list?call?should?be?roughly
????206?????????#?equivalent?to?the?PySequence_Fast?that?''.join()?would?do.
-->?207?????????chunks?=?self.iterencode(o,?_one_shot=True)
????208?????????if?not?isinstance(chunks,?(list,?tuple)):
????209?????????????chunks?=?list(chunks)

/usr/lib/python2.7/json/encoder.pyc?in?iterencode(self,?o,?_one_shot)
????268?????????????????self.key_separator,?self.item_separator,?self.sort_keys,????269?????????????????self.skipkeys,?_one_shot)
-->?270?????????return?_iterencode(o,?0)
????271?
????272?def?_make_iterencode(markers,?_default,?_encoder,?_indent,?_floatstr,ValueError:?Circular?reference?detected

究其原因,是因为 a b c 实际上指向的是同一个对象的引用。

解决办法:

import?json

a,?b?,?c?=?{},?{},?{}
#?将b?c?存到?a
a['b']?=?b
a['c']?=?c
json.dumps(a)

总结:

一般遇到ValueError: Circular reference detected错误,是因为同一个变量被循环引用导致的bug。检查代码中哪一个变量被循环引用,更改变量名就可以。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读