2012-03-12 38 views
3

在Django(1.3,python 2.7)中使用Suds時遇到了一些問題。Django和Suds:'NoneType'對象在泡沫中沒有屬性'str'

當我在腳本中使用泡沫檢索數據時,它可以工作; 但如果我把** exactyle同**代碼在Django的看法,我得到的錯誤:

'NoneType' object has no attribute 'str' in suds 

我的代碼很簡單:

client = Client(WSDL_URL, location=LOCATION_URL, cache=None) 
client.service.getRooms({'type':'AVAILABLE'}) 

以及完整回溯:

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

因此,如果任何人有一個想法,

感謝。

回答

0

你的錯誤是在這裏:

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

這些變量之一是None,我最初的懷疑是dt

12

這個錯誤是在泡沫,但通常是沉默。但是,當使用django-debug-toolbar時,該錯誤會暴露出來,因爲日誌記錄面板會顯示所有已記錄的消息。

我已創建修補此問題的修補版本的泡沫:https://github.com/bradleyayers/suds-htj

相關問題