Jinja在HTML中渲染文本,保留换行符

Hou*_*man 13 python jinja2 flask

我有一个这样的简单形式:

class RecordForm(Form):    
    notes = TextAreaField('Notes')
Run Code Online (Sandbox Code Playgroud)

我将数据记录在三个段落中,如下所示:

para1

para2

para3
Run Code Online (Sandbox Code Playgroud)

在模板中,我希望以只读方式查看该记录的内容.(不可编辑的形式)

记录是这种情况下包含数据的模型:

<td>{{ record.notes }}</td>
Run Code Online (Sandbox Code Playgroud)

- >

<td>para1 para2 para3</td>
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能显示多行?

Eev*_*vee 22

所有空格(包括换行符)都将转换为HTML中的单个空格.

您的选择,从最好到最差:

  1. 放上white-space: pre-wrap;包含元素.这告诉HTML显示与源中显示的完全相同的所有空白,包括换行符.(您也可以使用<pre>标签,但这也会禁用自动换行,这可能是您不想要的.)
  2. 将纯文本视为Markdown并向其抛出Markdown处理器--Markdown执行的操作之一就是将段落包含在其中<p>.
  3. 在Python-land中,做.replace('\n', '<br>').但是这使得你容易受到XSS的攻击,因为字符串中可能存在其他类似HTML的垃圾,并且修复这有点痛苦.

  • 请参阅 http://flask.pocoo.org/snippets/28/ 以获取 Flask / Jinja2 特定选项以将换行符转换为 `&lt;br&gt;` 标签*并*确保任何嵌入的 HTML 都被安全呈现。 (3认同)