我使用以下代码使用Web2Py助手动态生成HTML表格的内容:
response_results = []
for row in db(db.table.column_name == selected_column_val).select(db.table.ALL):
body_col = row.body_col
row_data = ['Col 1', row.col2, body_col.replace(".", ".<br/><br/>"), row.col4]
response_results.append(row_data)
html = DIV(TABLE(THEAD(TR(TH('Row #'), TH('Col 1'), TH('Col 2'), TH('Col 3'), TH('Col 4')), _id=0),
*[TR(response) for response in response_results],
_id='records_table', _class='table table-bordered'),
_class='table-responsive')
基本上,在这里我需要以一种更具可读性的方式呈现body_col的内容,所以我想在每个时期之后添加一些换行符。&#39;。我尝试过使用这两个,但没有一个有所不同:body_col.replace(".", ".<br/><br/>")
和body_col.replace(".", ".\n\n")
。
关于显示的输出:
<br/>
标记的输出时,它看起来很好。输入:
这是第一行。
这是第二行。
这是第三行。
这是第四行。
这是第五行。
输出:
这是第一行。
这是第二行。
这是第三行。
这是第四行。
这是第五行。
body_col.replace(".", ".\n\n")
动态呈现输出HTML时,它都是一行而没有任何换行符。输入:
这是第一行。
这是第二行。
这是第三行。
这是第四行。
这是第五行。
输出:
这是第一行。 这是第二行。 这是第三行。 这是第四行。 这是第五行。
body_col.replace(".", ".<br/><br/>")
动态呈现输出HTML时,它都是一行,没有任何换行符,但显示了文字<br/>
标记。输入:
这是第一行。
这是第二行。
这是第三行。
这是第四行。
这是第五行。
输出:
这是第一行。<br/><br/>
这是第二行。<br/><br/>
这是第三行。<br/><br/>
这是第四行。<br/><br/>
这是第五行。
即使我在Notepad ++中分析输入/输出文本以检查是否存在CR LF字符。我注意到CR LF总是存在,除非是动态生成。在这种情况下,即使它们存在于body_col
的输入数据中,也不存在CR LF字符。不知何故,当Web2Py HTML帮助程序生成输出表时,它们都被剥离了。
我也提到了这个link,但无法满足我的特定需求。
有人可以指导我如何完成这项任务?
非常感谢您的所有帮助。
答案 0 :(得分:1)
代码的一个问题是它包含原始HTML,web2py将在渲染输出中转义并逐字显示。要防止这种情况,您必须在XML()
帮助程序中包装任何原始HTML字符串:
row_data = ['Col 1', row.col2, XML(body_col.replace(".", ".<br/><br/>")), row.col4]
然而,这可能不是你唯一的问题 - 如果是的话,你会期望看到文字&#34; <br/>
&#34;页面中显示的字符串,但您没有看到。