2012-05-31 51 views
0

目前,我正在反序列化對象模型,使用內置在Django解串器,我仍堅持這一KeyError異常例外,我無法獲得有關其關鍵是問題的詳細信息。我不確定如何按照現狀進行調試。有人有主意嗎?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 protected]</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 protected]</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 protected]</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 protected]</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 protected]</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 protected]</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>' 

回答

1

您的異常處理代碼實際上是阻止您獲取有用的調試信息的原因。只要刪除所有這些無用的異常處理,就會得到完整的錯誤信息和一個很好的回溯。

+0

其實,我沒有得到一個很好的Django的錯誤信息,以前的開發者已經用他自己的輸出小於有益的包裝掩蓋它,異常代碼,我把在檢索異常類型,哪一個是實際的異常XML輸入。假設我不能使用內置錯誤調試頁面的django(黃色的) – Jharwood