0

目前,我正在使用内置的 django 反序列化器反序列化对象模型,但我遇到了这个 KeyError 异常,我无法获得有关哪个键是问题的更多信息。我不确定如何进行调试。有人有想法么?

注意:我不能使用内置的 Django 调试页面。

这是我的代码的精简版:

try:   
        # loop over deserialised objects returned from 'deserializer'
        print "serialise 123"  
        for obj in serializers.deserialize(format, data):
            print "serialise 125"  
        return True 

    except DeserializationError:
        return -1

    except Exception as e:
        print "===================="
        print type(e)
        print "********************"
        print e.args
        print "!!!!!!!!!!!!!!!!!!!!"
        print e
        return False

这是输入 XML:

<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
  <object pk="D5202F00-A8C7-11E1-B68A-00219B15530E" model="contacts.company">
    <field type="CharField" name="name">Company Name</field>
    <field type="CharField" name="internal_name">ComName</field>
    <field type="CharField" name="reference">NoRef</field>
    <field to="contacts.companystatus" name="company_status" rel="ManyToOneRel">9FBC97A3-2179-11E0-AEB7-005056C00008</field>
    <field type="CharField" name="vat_number">248053</field>
    <field type="CharField" name="registration_number">43905309</field>
    <field type="FloatField" name="discount">4.0</field>
    <field type="TextField" name="notes">gfhdfghdfghdfghdfgh</field>
    <field type="TextField" name="jms_code"><None></None></field>
    <field type="TextField" name="logo"><None></None></field>
  </object>
  <object pk="D53368E1-A8C7-11E1-AF74-00219B15530E" model="contacts.address">
    <field to="contacts.company" name="company" rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</field>
    <field type="CharField" name="group_name">Company Name</field>
    <field type="CharField" name="line1">Address 1</field>
    <field type="CharField" name="line2">Address 2</field>
    <field type="CharField" name="line3">Address 3</field>
    <field type="CharField" name="town">Town</field>
    <field type="CharField" name="county">Country</field>
    <field type="CharField" name="postcode">BA13 3WQ</field>
    <field type="CharField" name="country_iso">GB</field>
    <field type="CharField" name="telephone">01225555555</field>
    <field type="CharField" name="fax">01225555555</field>
    <field type="CharField" name="email">Email@Addre.ss</field>
    <field type="CharField" name="website">www.si.te</field>
    <field type="CharField" name="description">Main</field>
    <field type="CharField" name="jms_code"><None></None></field>
    <field type="CharField" name="notes">Notes</field>
  </object>
  <object pk="D53D7B00-A8C7-11E1-A34B-00219B15530E" model="contacts.contact">
    <field to="contacts.address" name="address" rel="ManyToOneRel">D53368E1-A8C7-11E1-AF74-00219B15530E</field>
    <field to="generic.title" name="title" rel="ManyToOneRel">04CD69A1-7FD4-11E0-A8A3-7071BCB8D2AB</field>
    <field type="CharField" name="forename">Forename</field>
    <field type="CharField" name="surname">Surname</field>
    <field type="CharField" name="position">Position</field>
    <field type="CharField" name="mobile">07912345064</field>
    <field type="CharField" name="direct_line">01225555555</field>
    <field type="CharField" name="email">Email@Addre.ss</field>
    <field type="IntegerField" name="origin">1</field>
    <field type="IntegerField" name="lead_source">1</field>
    <field type="TextField" name="notes">Notes</field>
    <field to="contacts.contactstatus" name="contact_status" rel="ManyToOneRel">10293BF4-217A-11E0-AEB7-005056C00008</field>
    <field to="contacts.contactmethod" name="contact_method" rel="ManyToOneRel">C240965A-2179-11E0-AEB7-005056C00008</field>
    <field type="CharField" name="jms_code"><None></None></field>
  </object>
  <object pk="89E270EE-A8D3-11E1-AC38-00219B15530E" model="contacts.supplies">
    <field to="contacts.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>
    <field to="boughtin.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">4</field>
  </object>
  <object pk="89F0539E-A8D3-11E1-A7EE-00219B15530E" model="contacts.supplies">
    <field to="contacts.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>
    <field to="boughtin.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">5</field>
  </object>
  <object pk="43D00F61-A8C8-11E1-ACFE-00219B15530E" model="contacts.supplier">
    <field to="contacts.company" name="company" rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</field>
    <field to="contacts.customercategory" name="category" rel="ManyToOneRel"><None></None></field>
    <field type="CharField" name="account_number">1</field>
    <field type="CharField" name="reference">NoRef</field>
    <field type="TextField" name="notes"><None></None></field>
    <field type="DateTimeField" name="date_created">2012-05-28 14:23:08</field>
    <field type="DateTimeField" name="date_modified">2012-05-28 15:43:50</field>
    <field to="auth.user" name="user" rel="ManyToOneRel">1</field>
    <field type="CharField" name="jms_code"><None></None></field>
  </object>
</django-objects>

这是代码输出:

serialise 123
====================
<type 'exceptions.KeyError'>
********************
(u'<?xml version="1.0" encoding="utf-8"?>\n<django-objects version="1.0">\n  <object pk="D5202F00-A8C7-11E1-B68A-00219B15530E" model="contacts.company">\n    <field type="CharField" name="name">Compan
y Name</field>\n    <field type="CharField" name="internal_name">ComName</field>\n    <field type="CharField" name="reference">NoRef</field>\n    <field to="contacts.companystatus" name="company_statu
s" rel="ManyToOneRel">9FBC97A3-2179-11E0-AEB7-005056C00008</field>\n    <field type="CharField" name="vat_number">248053</field>\n    <field type="CharField" name="registration_number">43905309</field
>\n    <field type="FloatField" name="discount">4.0</field>\n    <field type="TextField" name="notes">gfhdfghdfghdfghdfgh</field>\n    <field type="TextField" name="jms_code"><None></None></field>\n
  <field type="TextField" name="logo"><None></None></field>\n  </object>\n  <object pk="D53368E1-A8C7-11E1-AF74-00219B15530E" model="contacts.address">\n    <field to="contacts.company" name="company"
 rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</field>\n    <field type="CharField" name="group_name">Company Name</field>\n    <field type="CharField" name="line1">Address 1</field>\n    <f
ield type="CharField" name="line2">Address 2</field>\n    <field type="CharField" name="line3">Address 3</field>\n    <field type="CharField" name="town">Town</field>\n    <field type="CharField" name
="county">Country</field>\n    <field type="CharField" name="postcode">BA13 3WQ</field>\n    <field type="CharField" name="country_iso">GB</field>\n    <field type="CharField" name="telephone">0122555
5555</field>\n    <field type="CharField" name="fax">01225555555</field>\n    <field type="CharField" name="email">Email@Addre.ss</field>\n    <field type="CharField" name="website">www.si.te</field>\
n    <field type="CharField" name="description">Main</field>\n    <field type="CharField" name="jms_code"><None></None></field>\n    <field type="CharField" name="notes">Notes</field>\n  </object>\n
<object pk="D53D7B00-A8C7-11E1-A34B-00219B15530E" model="contacts.contact">\n    <field to="contacts.address" name="address" rel="ManyToOneRel">D53368E1-A8C7-11E1-AF74-00219B15530E</field>\n    <field
 to="generic.title" name="title" rel="ManyToOneRel">04CD69A1-7FD4-11E0-A8A3-7071BCB8D2AB</field>\n    <field type="CharField" name="forename">Forename</field>\n    <field type="CharField" name="surnam
e">Surname</field>\n    <field type="CharField" name="position">Position</field>\n    <field type="CharField" name="mobile">07912345064</field>\n    <field type="CharField" name="direct_line">01225555
555</field>\n    <field type="CharField" name="email">Email@Addre.ss</field>\n    <field type="IntegerField" name="origin">1</field>\n    <field type="IntegerField" name="lead_source">1</field>\n    <
field type="TextField" name="notes">Notes</field>\n    <field to="contacts.contactstatus" name="contact_status" rel="ManyToOneRel">10293BF4-217A-11E0-AEB7-005056C00008</field>\n    <field to="contacts
.contactmethod" name="contact_method" rel="ManyToOneRel">C240965A-2179-11E0-AEB7-005056C00008</field>\n    <field type="CharField" name="jms_code"><None></None></field>\n  </object>\n  <object pk="89E
270EE-A8D3-11E1-AC38-00219B15530E" model="contacts.supplies">\n    <field to="contacts.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>\n    <field to="boughti
n.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">4</field>\n  </object>\n  <object pk="89F0539E-A8D3-11E1-A7EE-00219B15530E" model="contacts.supplies">\n    <field to="contact
s.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>\n    <field to="boughtin.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">5</field>\n
  </object>\n  <object pk="43D00F61-A8C8-11E1-ACFE-00219B15530E" model="contacts.supplier">\n    <field to="contacts.company" name="company" rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</fi
eld>\n    <field to="contacts.customercategory" name="category" rel="ManyToOneRel"><None></None></field>\n    <field type="CharField" name="account_number">1</field>\n    <field type="CharField" name=
"reference">NoRef</field>\n    <field type="TextField" name="notes"><None></None></field>\n    <field type="DateTimeField" name="date_created">2012-05-28 14:23:08</field>\n    <field type="DateTimeFie
ld" name="date_modified">2012-05-28 15:43:50</field>\n    <field to="auth.user" name="user" rel="ManyToOneRel">1</field>\n    <field type="CharField" name="jms_code"><None></None></field>\n  </object>
\n</django-objects>',)
!!!!!!!!!!!!!!!!!!!!
u'<?xml version="1.0" encoding="utf-8"?>\n<django-objects version="1.0">\n  <object pk="D5202F00-A8C7-11E1-B68A-00219B15530E" model="contacts.company">\n    <field type="CharField" name="name">Company
 Name</field>\n    <field type="CharField" name="internal_name">ComName</field>\n    <field type="CharField" name="reference">NoRef</field>\n    <field to="contacts.companystatus" name="company_status
" rel="ManyToOneRel">9FBC97A3-2179-11E0-AEB7-005056C00008</field>\n    <field type="CharField" name="vat_number">248053</field>\n    <field type="CharField" name="registration_number">43905309</field>
\n    <field type="FloatField" name="discount">4.0</field>\n    <field type="TextField" name="notes">gfhdfghdfghdfghdfgh</field>\n    <field type="TextField" name="jms_code"><None></None></field>\n
 <field type="TextField" name="logo"><None></None></field>\n  </object>\n  <object pk="D53368E1-A8C7-11E1-AF74-00219B15530E" model="contacts.address">\n    <field to="contacts.company" name="company"
rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</field>\n    <field type="CharField" name="group_name">Company Name</field>\n    <field type="CharField" name="line1">Address 1</field>\n    <fi
eld type="CharField" name="line2">Address 2</field>\n    <field type="CharField" name="line3">Address 3</field>\n    <field type="CharField" name="town">Town</field>\n    <field type="CharField" name=
"county">Country</field>\n    <field type="CharField" name="postcode">BA13 3WQ</field>\n    <field type="CharField" name="country_iso">GB</field>\n    <field type="CharField" name="telephone">01225555
555</field>\n    <field type="CharField" name="fax">01225555555</field>\n    <field type="CharField" name="email">Email@Addre.ss</field>\n    <field type="CharField" name="website">www.si.te</field>\n
    <field type="CharField" name="description">Main</field>\n    <field type="CharField" name="jms_code"><None></None></field>\n    <field type="CharField" name="notes">Notes</field>\n  </object>\n  <
object pk="D53D7B00-A8C7-11E1-A34B-00219B15530E" model="contacts.contact">\n    <field to="contacts.address" name="address" rel="ManyToOneRel">D53368E1-A8C7-11E1-AF74-00219B15530E</field>\n    <field
to="generic.title" name="title" rel="ManyToOneRel">04CD69A1-7FD4-11E0-A8A3-7071BCB8D2AB</field>\n    <field type="CharField" name="forename">Forename</field>\n    <field type="CharField" name="surname
">Surname</field>\n    <field type="CharField" name="position">Position</field>\n    <field type="CharField" name="mobile">07912345064</field>\n    <field type="CharField" name="direct_line">012255555
55</field>\n    <field type="CharField" name="email">Email@Addre.ss</field>\n    <field type="IntegerField" name="origin">1</field>\n    <field type="IntegerField" name="lead_source">1</field>\n    <f
ield type="TextField" name="notes">Notes</field>\n    <field to="contacts.contactstatus" name="contact_status" rel="ManyToOneRel">10293BF4-217A-11E0-AEB7-005056C00008</field>\n    <field to="contacts.
contactmethod" name="contact_method" rel="ManyToOneRel">C240965A-2179-11E0-AEB7-005056C00008</field>\n    <field type="CharField" name="jms_code"><None></None></field>\n  </object>\n  <object pk="89E2
70EE-A8D3-11E1-AC38-00219B15530E" model="contacts.supplies">\n    <field to="contacts.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>\n    <field to="boughtin
.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">4</field>\n  </object>\n  <object pk="89F0539E-A8D3-11E1-A7EE-00219B15530E" model="contacts.supplies">\n    <field to="contacts
.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>\n    <field to="boughtin.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">5</field>\n
 </object>\n  <object pk="43D00F61-A8C8-11E1-ACFE-00219B15530E" model="contacts.supplier">\n    <field to="contacts.company" name="company" rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</fie
ld>\n    <field to="contacts.customercategory" name="category" rel="ManyToOneRel"><None></None></field>\n    <field type="CharField" name="account_number">1</field>\n    <field type="CharField" name="
reference">NoRef</field>\n    <field type="TextField" name="notes"><None></None></field>\n    <field type="DateTimeField" name="date_created">2012-05-28 14:23:08</field>\n    <field type="DateTimeFiel
d" name="date_modified">2012-05-28 15:43:50</field>\n    <field to="auth.user" name="user" rel="ManyToOneRel">1</field>\n    <field type="CharField" name="jms_code"><None></None></field>\n  </object>\
n</django-objects>'
4

1 回答 1

1

您的异常处理代码实际上是阻止您获取有用的调试信息的原因。只需删除所有这些无用的异常处理,您就会得到完整的错误消息和很好的回溯。

于 2012-05-31T11:40:45.517 回答