8

如果有人输入一个短语,例如:

I see you driving

round town with the girl I love,

and I’m like: haiku.

(每行之间没有空行,但文本写在三个单独的行上)到网页上的文本框中,然后按下一个按钮,然后通过 存储在数据库中Django,该字符串被读回并打印在一个页面,我怎样才能让它在 HTML 页面上打印,而换行符仍在文本中?

因此,不要将其打印为: I see you driving round town with the girl I love, and I’m like: haiku.

它会打印为:

I see you driving

round town with the girl I love,

and I’m like: haiku.

我知道如果我使用: (textarea)soAndSo.body(/textarea),这会保留用户最初键入文件时文件中的换行符。我怎样才能得到同样的效果,但不必使用textarea盒子?

4

4 回答 4

4

\r\n虽然用 a 替换换行符<br/>绝对是一种选择,但您可能需要考虑csswhite-space属性

#haiku {white-space:pre;}

Fiddled,值得注意的是,即使在 IE6+ 上,该属性也得到了令人惊讶的良好支持

于 2012-11-05T22:58:05.430 回答
2

包装输出<pre>将保留格式,<pre>soAndSo.body</pre>

更高级的解决方案是将换行符转换为 HTML 段落或换行符。Django 有内置的过滤器:linebreakslinebreaksbr都可以解决问题。

如果你想使用这些,像这样过滤输出:{{ soAndSo.body|linebreaks }}

于 2012-11-05T22:25:20.710 回答
2

在模板中使用linebreaksbr(或linebreaks )过滤器。

例如:

{{ value|linebreaksbr }}

如果值为Joel\nis a slug,则输出为Joel<br />is a slug

于 2012-11-05T22:25:50.213 回答
0

换行符就在那里,它只是在 HTML 中没有做任何事情。

使用过滤器,例如{{ content|linebreaksbr }}

于 2012-11-05T22:26:23.317 回答