首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django和Suds:“NoneType”对象在suds中没有属性“str”

Django和Suds:“NoneType”对象在suds中没有属性“str”
EN

Stack Overflow用户
提问于 2012-03-12 17:43:24
回答 2查看 2K关注 0票数 3

我在Django (1.3,python 2.7)中使用Suds时遇到了一点小问题。

当我在脚本中使用suds检索数据时,它是有效的;但如果我将**精确相同**代码放在django视图中,我会得到错误:

代码语言:javascript
复制
'NoneType' object has no attribute 'str' in suds

我的代码很简单:

代码语言:javascript
复制
client = Client(WSDL_URL, location=LOCATION_URL, cache=None)
client.service.getRooms({'type':'AVAILABLE'})

以及完整的回溯:

代码语言:javascript
复制
File "/Users/lundi/Irusia/WWW/rooms/views.py", line 45, in available
    client.service.getRooms({'type':'AVAILABLE'})
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/client.py", line 542, in __call__
    return client.invoke(args, kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/client.py", line 595, in invoke
    soapenv = binding.get_message(self.method, args, kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/bindings/binding.py", line 120, in get_message
    content = self.bodycontent(method, args, kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/bindings/document.py", line 63, in bodycontent
    p = self.mkparam(method, pd, value)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/bindings/document.py", line 105, in mkparam
    return Binding.mkparam(self, method, pdef, object)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/bindings/binding.py", line 287, in mkparam
    return marshaller.process(content)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/mx/core.py", line 62, in process
    self.append(document, content)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/mx/core.py", line 73, in append
    log.debug('appending parent:\n%s\ncontent:\n%s', parent, content)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 1120, in debug
    self._log(DEBUG, msg, args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 1250, in _log
    self.handle(record)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 744, in handle
    self.emit(record)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/handlers.py", line 791, in emit
    msg = self.format(record) + '\000'
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 719, in format
    return fmt.format(record)
  File "/Users/lundi/Irusia/WWW/base/log.py", line 22, in format
    s = '%s [%s] %s: %s' % (dt, record.name, record.levelname, record.getMessage())
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 328, in getMessage
    msg = msg % self.args
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/sax/document.py", line 58, in __str__
    return unicode(self).encode('utf-8')
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/sax/document.py", line 61, in __unicode__
    return self.str()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/sax/document.py", line 48, in str
    s.append(self.root().str())
AttributeError: 'NoneType' object has no attribute 'str'

我不知道为什么我使用Django会得到这个错误。

我认为这和这个人有同样的问题:AttributeError: 'NoneType' object has no attribute 'str' in suds

所以如果有人有主意的话,

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-13 01:02:42

你的错误在这里:

s = '%s [%s] %s: %s' % (dt, record.name, record.levelname, record.getMessage())

其中一个变量是None,我最初怀疑的是dt

票数 0
EN

Stack Overflow用户

发布于 2012-05-04 11:09:21

bug在suds中,但通常是静默的。但是,在使用django-debug-toolbar时会暴露该bug,因为日志记录面板会显示所有已记录的消息。

我已经创建了一个修补版本的suds来解决这个问题:https://github.com/bradleyayers/suds-htj

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9664705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档