如何在Python Django模板中打印换行符

时间:2010-02-23 04:03:35

标签: python html django templates

{'quotes': u'Live before you die.\n\n"Dream as if you\'ll live forever, live as if you\'ll die today"\n\n"Love one person, take care of them until you die. You know, raise kids. Have a good life. Be a good friend. Try to be completely who you are, figure out what you personally love and go after it with everything you\'ve got no matter how much it takes." -Angelina Jolie.'}

请注意我的词典中包含换行符: \ n

如何使用这些换行符显示模板?

{{报价| withlinebreaks \ N}}

4 个答案:

答案 0 :(得分:57)

使用linebreaks过滤器。

例如:

{{ value|linebreaks }}

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

答案 1 :(得分:7)

您还可以使用linebreaksbr过滤器将所有换行符转换为<br>  没有额外的<p>

示例:

{{ value|linebreaksbr }}

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

Ignacio's answerlinebreaks过滤器)的区别在于linebreaks尝试猜测文本中的段落并将<p>中的每个段落包裹在linebreaksbr中只需substitutes newlines with <br>

这是一个演示:

>>> from django.template.defaultfilters import linebreaks
>>> from django.template.defaultfilters import linebreaksbr
>>> text = 'One\nbreak\n\nTwo breaks\n\n\nThree breaks'
>>> linebreaks(text)
'<p>One<br />break</p>\n\n<p>Two breaks</p>\n\n<p>Three breaks</p>'
>>> linebreaksbr(text)
'One<br />break<br /><br />Two breaks<br /><br /><br />Three breaks'

答案 2 :(得分:0)

使用'<br>'代替/n

如有必要,您可以执行.replace('/n', '<br>')

答案 3 :(得分:0)

所有这些答案都没有明确提到应该在显示模板中使用 {{ value|linebreaksbr }},即获取请求而不是发布请求。

所以如果你有一个模板来显示 post.details,那就是

<h4>Below are the post details</h4>

{{ post.details|linebreaksbr }}

而不是在帖子形式中

<form method="post">
    {% csrf_token %}
    {{ form|linebreaksbr }}
    <button>Save post</button>
</form>

遇到了同样的问题,在弄清楚之后我们决定外面的人可能会觉得它很方便。 快乐编码!