【问题标题】:How to read back and print text with newlines from a Python (Django) string with HTML?如何从带有 HTML 的 Python (Django) 字符串中读取并打印带有换行符的文本?
【发布时间】:2012-10-25 20:03:40
【问题描述】:

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

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 框?

【问题讨论】:

    标签: python html django newline


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      例如:

      {{ value|linebreaksbr }}

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

      【讨论】:

        【解决方案3】:

        换行符就在那里,它只是在 HTML 中没有任何作用。

        使用像{{ content|linebreaksbr }}这样的过滤器

        【讨论】:

          【解决方案4】:

          虽然将换行符 \r\n 替换为 <br/> 绝对是一种选择,但您可能需要考虑 css white-space property

          #haiku {white-space:pre;}
          

          Fiddled,值得注意的是the property is surprisingly well-supported,即使在IE6+上也是如此

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-09-16
            • 1970-01-01
            • 2018-07-06
            • 2020-03-01
            • 1970-01-01
            • 2013-05-05
            • 1970-01-01
            相关资源
            最近更新 更多