models.TextField()中的换行符未在模板中呈现

Joh*_*ohn 14 django newline

我有一个属性的模型,

desc = models.TextField()
Run Code Online (Sandbox Code Playgroud)

我使用Django提供的管理界面输入数据,然后查看我的模板,获取并显示数据库值.

在我的管理界面中,我离开换行符(只是在我的段落之间留下空白行),但它们在我的模板中显示为单个段落.

我正在使用Django 1.3和MySQL.

Ign*_*ams 45

linebreaks

用适当的HTML替换纯文本中的换行符; 单个换行符成为HTML换行符(<br />),后面跟空行的换行符成为段落符号(</p>).

例如:

{{ value|linebreaks }}


Ein*_*ein 5

请注意,我遇到了类似的问题,换行符没有显示出来,我意识到当 TextField 被声明为只读时,文本用 HTML 段落标签包装:

<p> text </p>
Run Code Online (Sandbox Code Playgroud)

与 pre 标签相反:

<pre> text </pre>
Run Code Online (Sandbox Code Playgroud)

Pre 标记保留新的行空间,因此如果您不将该字段设为只读,您将看到行空间。


小智 5

约翰,看来你从伊格纳西奥那里得到了很好的回答。我只是想指出我为那些可能感到困惑的人(就像我一样)使用 Ignacio 的答案所采取的步骤。在我显示文本字段的模板中,我在模板字段名称后面添加了“ |linebreaks ”(在我的例子中是“job.desc”):

<ul>
    {% for job in varDataObject %}
    <li>
        <h4>
            <a href="#" onclick='funPath("Job", {{ job.id }})'>{{ job.title }} </a>
        </h4>
        Description: {{ job.desc|linebreaks }}
Run Code Online (Sandbox Code Playgroud)