从数据库渲染文本时,Django不显示换行符

时间:2009-08-31 06:18:05

标签: html django-templates newline

我正在使用Django进行开发,从数据库中检索包含换行符的一些文本。但是,当我使用模板标记将其渲染到模板时,它不会显示换行符。

有什么问题?

2 个答案:

答案 0 :(得分:190)

您必须记住您的模板正在生成HTML。在HTML中,换行符只是另一个空格,并不意味着将以下文本放在新行上。有许多方法可以在HTML中强制使用新行。

您可以使用<pre>标记包装文本,以便HTML了解它已预先格式化:

<pre>{{value}}</pre>

您可以使用Django过滤器将纯文本换行符转换为HTML。 linebreaks会将单个换行符转换为<br>个标记,并将换行符加倍转换为<p>个标记。 linebreaksbr只需将换行符转换为<br>代码:

{{value|linebreaks}}
{{value|linebreaksbr}}

你可以试验这些,看看你更喜欢哪一个。

如果不这样做,您可以在视图中使用字符串操作,以便以更适合您的方式将纯文本转换为HTML。如果你想要变得非常先进,你可以编写自己的过滤器来转换你喜欢的方式,并在整个模板中使用它。

答案 1 :(得分:20)

不确定我是否完全理解您的问题,但请尝试使用linebreaks过滤器。

{{ value|linebreaks }}