Web2Py在呈现HTML表格时在列的文本中添加换行符

时间:2015-08-11 23:54:07

标签: python html web2py

我使用以下代码使用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")

关于显示的输出:

  • 当我在HTML中直接添加带有<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,但无法满足我的特定需求。

有人可以指导我如何完成这项任务?

非常感谢您的所有帮助。

1 个答案:

答案 0 :(得分:1)

代码的一个问题是它包含原始HTML,web2py将在渲染输出中转义并逐字显示。要防止这种情况,您必须在XML()帮助程序中包装任何原始HTML字符串:

row_data = ['Col 1', row.col2, XML(body_col.replace(".", ".<br/><br/>")), row.col4]

然而,这可能不是你唯一的问题 - 如果是的话,你会期望看到文字&#34; <br/>&#34;页面中显示的字符串,但您没有看到。