Web2Py 在呈现时在列的文本中添加换行符 HTML table
Web2Py add newlines in a column's text while rendering HTML table
我正在使用以下代码使用 Web2Py 助手动态生成我的 HTML table 的内容:
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 的内容,因此我试图在每个句号“.”之后添加一些换行符。我试过使用这两个,但其中 none 有任何区别: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++ 中分析 input/output 文本以检查是否存在 CR LF 字符。我注意到 CR LF 始终存在,除非仅在动态生成时除外。在那种情况下,不存在 CR LF 字符,即使它们存在于 body_col
的输入数据中。不知何故,当 Web2Py HTML 助手生成输出 table.
时,它们都被剥离了
我也提到了这个link,但不能完全理解它来满足我的特定需求。
有人可以指导我如何完成这项任务吗?
非常感谢您的帮助。
代码的一个问题是它包含原始 HTML,web2py 将转义并在呈现的输出中逐字显示。为防止这种情况,您必须将任何原始 HTML 字符串包装在 XML()
帮助器中:
row_data = ['Col 1', row.col2, XML(body_col.replace(".", ".<br/><br/>")), row.col4]
但是,这可能不是您唯一的问题——如果是,您会希望在页面中看到文字“<br/>
”字符串,但您并没有看到。
我正在使用以下代码使用 Web2Py 助手动态生成我的 HTML table 的内容:
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 的内容,因此我试图在每个句号“.”之后添加一些换行符。我试过使用这两个,但其中 none 有任何区别: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++ 中分析 input/output 文本以检查是否存在 CR LF 字符。我注意到 CR LF 始终存在,除非仅在动态生成时除外。在那种情况下,不存在 CR LF 字符,即使它们存在于 body_col
的输入数据中。不知何故,当 Web2Py HTML 助手生成输出 table.
我也提到了这个link,但不能完全理解它来满足我的特定需求。
有人可以指导我如何完成这项任务吗?
非常感谢您的帮助。
代码的一个问题是它包含原始 HTML,web2py 将转义并在呈现的输出中逐字显示。为防止这种情况,您必须将任何原始 HTML 字符串包装在 XML()
帮助器中:
row_data = ['Col 1', row.col2, XML(body_col.replace(".", ".<br/><br/>")), row.col4]
但是,这可能不是您唯一的问题——如果是,您会希望在页面中看到文字“<br/>
”字符串,但您并没有看到。