变色龙断线

2024-05-16 07:09:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pyramid框架构建了一个大型web应用程序。在

除此之外,此应用程序允许用户在文本区域表单字段中输入文本。这些文本然后被保存到数据库中,当然可以再次读出并在以后显示。在

要显示内容,我使用Chameleon Template Engine。在

除了换行没有正确显示(根本不显示)之外,这一切都很好。这可能是因为输入到文本区域的新行在通过Chameleon显示时不会导致HTML中出现新行。怎么才能解决这个问题?在

<br>-标记替换换行符没有帮助,因为默认情况下Chameleon会转义所有HTML标记。我知道可以停用此功能,但我不想这样做以避免跨站点脚本。在


Tags: 用户标记文本框架pyramidweb数据库应用程序
2条回答

您需要将文本分成单独的行,然后使用循环和<br/>标记呈现:

<span tal:omit-tag="" 
      tal:repeat="line text_with_newlines.splitlines()">
  ${line}<br />
</span>

它使用^{} method在换行上拆分文本,然后循环在文本的每一行后面添加一个<br />中断标记。在

在视图中不这样做是非常正确的,然后通过设置structure:标志来强制变色龙接受插入的<br />标记。幸运的是,无论如何也没有必要那样做。在

另一种可能性是采取如下措施:

import webhelpers.html.tags as t
s = t.literal(t.BR).join(s.split(t.NL))

当然,您可以从中创建一个helper函数。在

相关问题 更多 >