此问题是Web2Py - rendering AJAX response as HTML table
的扩展基本上,我想出了一个动态的响应行列表,我需要在UI上显示为HTML表。
基本上代码看起来像这样,
response_results = []
row_one = ['1', 'Col 11', 'Col 12', 'Col 13']
response_results.append(row_one)
row_two = ['2', 'Col 21', 'Col 22', 'Col 23']
response_results.append(row_two)
html = DIV(TABLE(THEAD(TR(TH('Row #'), TH('Col 1'), TH('Col 2'), TH('Col 3')),
_id=0), TR([*response for response in response_results]),
_id='records_table', _class='table table-bordered'),
_class='table-responsive')
return html
当我使用这种代码:TR([request.vars[input] for input in inputs])
或TR(*the_list)
时,它可以正常使用。
但是,我想出使用这两者的混合物TR([*response for response in response_results])
。但是,它没有给出错误消息:
" Python 2.7版不支持此语法。在Python 2中,不允许使用已加星标的表达式作为分配目标。"
当我运行此代码时,即没有' *':TR([response for response in response_results])
它运行正常但将我的行的所有列放在生成的HTML表的第一列中,所有其他栏目都空白。
有人可以帮我解决这个问题,并指导我如何在生成的HTML表格中的适当位置实现显示每行的所需结果?
答案 0 :(得分:1)
您需要为TR
中的每个项生成response_results
,这意味着您需要一个TR
元素列表,然后您可以使用它们使用Python参数扩展(即{ {1}}语法)将每个*
视为TR
的位置参数。
TABLE
注意,因为每个html = DIV(TABLE(THEAD(TR(TH('Row #'), TH('Col 1'), TH('Col 2'), TH('Col 3')), _id=0),
*[TR(response) for response in response_results],
_id='records_table', _class='table table-bordered'),
_class='table-responsive')
本身就是一个列表,您还可以在 response
中使用参数扩展:
TR
但这不是必需的,因为*[TR(*response) for response in response_results]
可选择采用列表,将列表中的每个项目转换为表格单元格。
另一个选项是TR
列出response_results
元素,从TR
元素开始,然后将该列表传递给THEAD
:
TABLE
同样,您可以执行response_results = [THEAD(TR(TH('Row #'), TH('Col 1'), TH('Col 2'), TH('Col 3')), _id=0)]
row_one = ['1', 'Col 11', 'Col 12', 'Col 13']
response_results.append(TR(row_one))
row_two = ['2', 'Col 21', 'Col 22', 'Col 23']
response_results.append(TR(row_two))
html = DIV(TABLE(response_results, _id='records_table', _class='table table-bordered'),
_class='table-responsive')
,但TABLE(*response_results, ...)
不是必需的,因为*
可以获取行元素列表。