使用suds将python列表传递给ladon
我想向我的ladon服务发送一个python列表。 请考虑下面的Python列表使用suds将python列表传递给ladon,python,soap,suds,ladon,Python,Soap,Suds,Ladon,我想向我的ladon服务发送一个python列表。 请考虑下面的Python列表 lst_col_title = [(1, 'Column1', 10, 'L'),(2, 'Column2', 15, 'L'),(3, 'Column3', 15, 'L'),(4, 'Column4', 10, 'L'),(5, 'Column5', 10, 'L')] 他们是否有可能使用肥皂水向ladon服务发送此类列表 编辑 实际上,我想使用sud将以下python变量发送到ladon服务 str
lst_col_title = [(1, 'Column1', 10, 'L'),(2, 'Column2', 15, 'L'),(3, 'Column3', 15, 'L'),(4, 'Column4', 10, 'L'),(5, 'Column5', 10, 'L')]
他们是否有可能使用肥皂水向ladon服务发送此类列表
编辑
实际上,我想使用sud将以下python变量发送到ladon服务
str_report_name = 'OPENING BALANCE REPORT'
str_report_format = 'GENERAL'
lst_main_heading = [('<w><h><b><ds>NAME TRAVEL & TOURISM</ds></b></h></w>', 1), ('<p5><b> <b></p5>', 2), ('<b><p2>P.O BOX 3000, JEDDAH 12345, KSA, Phone: 02 6845455</p2></b>', 3), ('<b><p2>Email: info@nametravel.com, Fax: 02 6873455, C.R.No: </p2></b>', 4), ('', 5)]
lst_header = []
lst_report_header = [['', 'CREDIT NOTE', '', '<u><b><w>'], ['', '', '', ''], ['', 'No: RF/1', '', '<b>'], ['To, CASH KAAU (942)', '', 'Date: 01/01/2011', '<b>'], [' P.O. Box No. 3263,DOHA,QATAR', '', 'Code: C022 ', '<b>'], [' Tel: +91 9945 4561 45, Fax: +21 7894 7894', '', '', '<b>'], [' E-Mail: cashkaau123@gmail.com', '', '', '<b>'], ['', '', '', ''], ['Please note that we have CREDITED your account with following details.', '', '', '']]
lst_page_header = []
lst_footer = []
lst_page_footer = []
lst_report_footer = [['Two Thousand Two Hundred Seventeen Saudi Riyal Only ', '', '2217.00', '<b>'], ['', '', '', ''], ['Accountant', 'Created By:ADMIN', 'Manager', ''], ['', '', '', ''], ['Signature', '', '', '']]
lst_report_data = [('', '', '', '', ''), (1, '065-9778821549', 'ABOUNASEF/SEHAM KAMEL MRS', 'JED/CAI/JED', '2584.00'), ('', '', '<i>Less</i>: Cancellation Fee', '', '367.00'), ('', '', '', '', ''), ('', 'THIS IS TO CHECK THE NARRATION PRINTING THIS IS TO CHECK THE NARRATION PRINTING THIS IS TO CHECK THE NARR<i>', '', '', '')]
bln_show_column_heading = True
lst_col_title = [(1, 'Column1', 10, 'L'),(2, 'Column2', 15, 'L'),(3, 'Column3', 15, 'L'),(4, 'Column4', 10, 'L'),(5, 'Column5', 10, 'L')]
但是[PORTABLE_STRING]不能满足我的要求
由于我是web服务新手,我不知道如何处理复杂python类型的ase类型
更新
我为您创建了一个新的ladon类型
lst_col_title = [(1, 'Column1', 10, 'L'),(2, 'Column2', 15, 'L'),(3, 'Column3', 15, 'L'),(4, 'Column4', 10, 'L'),(5, 'Column5', 10, 'L')]
作为:
并将@ladonize修改为
@ladonize(str,str,[PORTABLE_STRING],[PORTABLE_STRING],[PORTABLE_STRING],[PORTABLE_STRING],[PORTABLE_STRING],[PORTABLE_STRING],[PORTABLE_STRING],[PORTABLE_STRING],[PORTABLE_STRING],[ Table ], rtype=str)
这条路对吗?
这给我带来了一个错误
' Server raised fault: '
classname: <class 'AccountEngine.Table'>
Dictionary expected for prime_dict got "<type 'unicode'>" of value "1"'
“服务器引发的错误:”
类名:
应为prime_dict获取值为“1”的“”的字典
我相信这就是您要找的。基本上,您要做的是将每个元组转换为LadonType,然后返回这些类型的列表,类似于该教程中的listAlbums
和listBands
方法。另一个关于LadonTypes的教程
拉顿
肥皂水
通过将每个列表转换为字符串,我解决了这个问题
self.generate_pdf_file(str_report_name,
str_report_format,
str(lst_main_heading),
str(lst_header),
str(lst_report_header),
str(lst_page_header),
str(lst_footer),
str(lst_report_footer),
str(lst_page_footer),
str(lst_report_data),
bln_show_column_heading,
str(lst_col_title))
现在我的@ladonise看起来像:
@ladonize(str,str,str,str,str,str,str,str,str,str,str,str, rtype=str)
def generate_pdf_print(self, str_report_name,str_report_format,lst_main_heading, lst_header, lst_report_header, lst_page_header, lst_footer, lst_report_footer, lst_page_footer, lst_report_data, bln_show_column_heading, lst_col_title, **args):
并使用eval将这些值还原为以下值:
def generate_pdf_print(self,db,
str_report_name = 'OPENING BALANCE REPORT',
str_report_format = 'GENERAL',
lst_main_heading = [],
lst_header = [],
lst_report_header = [],
lst_page_header = [],
lst_footer = [],
lst_report_footer = [],
lst_page_footer = [],
lst_report_data = [],
bln_show_column_heading = True,
lst_col_title = [],
int_count_blocks_of_data_in_print = 1,
str_pdf_theme = 'Default'
):
lst_main_heading = eval(lst_main_heading)
lst_header = eval(lst_header)
lst_report_header = eval(lst_report_header)
lst_page_header = eval(lst_page_header)
lst_footer = eval(lst_footer)
lst_page_footer = eval(lst_page_footer)
lst_report_footer = eval(lst_report_footer)
lst_report_data = eval(lst_report_data)
bln_show_column_heading = True
lst_col_title = eval(lst_col_title)
可以发送LadonType对象列表 例如:
class Mov(LadonType):
id = int
text = str
@ladonize([Mov], rtype=PORTABLE_STRING)
def ReceiveMovs(self, moves):
....
客户端(ArrayOfxxx,其中xxx是对象类名):
客户最重要的部分是:
moves["item"] = [data1, data2]
res = client.service.ReceiveMovs(moves=moves)
我希望这有帮助!!
为我的英语道歉。@johnthexiii,感谢您的帮助,我尝试使用LadonTypes,但它显示服务器引发的错误:。我已经编辑了我的问题。这显示了我想对复杂类型执行的操作。@johnthexii感谢您的编辑。我已经解决了我的问题,没有一个LadonType。我对传递LadonType不太了解,所以它对我很有帮助。
@ladonize(str,str,str,str,str,str,str,str,str,str,str,str, rtype=str)
def generate_pdf_print(self, str_report_name,str_report_format,lst_main_heading, lst_header, lst_report_header, lst_page_header, lst_footer, lst_report_footer, lst_page_footer, lst_report_data, bln_show_column_heading, lst_col_title, **args):
def generate_pdf_print(self,db,
str_report_name = 'OPENING BALANCE REPORT',
str_report_format = 'GENERAL',
lst_main_heading = [],
lst_header = [],
lst_report_header = [],
lst_page_header = [],
lst_footer = [],
lst_report_footer = [],
lst_page_footer = [],
lst_report_data = [],
bln_show_column_heading = True,
lst_col_title = [],
int_count_blocks_of_data_in_print = 1,
str_pdf_theme = 'Default'
):
lst_main_heading = eval(lst_main_heading)
lst_header = eval(lst_header)
lst_report_header = eval(lst_report_header)
lst_page_header = eval(lst_page_header)
lst_footer = eval(lst_footer)
lst_page_footer = eval(lst_page_footer)
lst_report_footer = eval(lst_report_footer)
lst_report_data = eval(lst_report_data)
bln_show_column_heading = True
lst_col_title = eval(lst_col_title)
class Mov(LadonType):
id = int
text = str
@ladonize([Mov], rtype=PORTABLE_STRING)
def ReceiveMovs(self, moves):
....
moves = client.factory.create("ArrayOfMov")
data1 = client.factory.create("Mov")
data1.id = 1
data1.text = "Test 1"
data2 = client.factory.create("Mov")
data2.id = 2
data2.text = "Test 2"
moves["item"] = [data1, data2]
res = client.service.ReceiveMovs(moves=moves)