Django zeigt beim Rendern von Text aus der Datenbank kein Zeilenumbruchzeichen an

90

Ich verwende Django für die Entwicklung und rufe Text mit einem Zeilenumbruch aus der Datenbank ab. Wenn ich es jedoch mithilfe eines Vorlagen-Tags in eine Vorlage rendere, wird das Zeilenumbruchzeichen nicht angezeigt.

Was ist das Problem?

Nazmul Hasan
quelle

Antworten:

221

Sie müssen sich daran erinnern, dass Ihre Vorlagen HTML produzieren. In HTML ist ein Zeilenumbruchzeichen nur ein weiterer Leerraum. Dies bedeutet nicht, dass der folgende Text in eine neue Zeile eingefügt wird. Es gibt verschiedene Möglichkeiten, neue Zeilen in HTML zu erzwingen.

Sie können Ihren Text mit einem <pre>Tag versehen, damit HTML versteht, dass er vorformatiert ist:

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

Sie können Django-Filter verwenden, um Ihre Nur-Text-Zeilenumbrüche in HTML zu konvertieren. linebreaksVerwandelt einzelne Zeilenumbrüche in <br>Tags und doppelte Zeilenumbrüche in <p>Tags. linebreaksbrverwandelt einfach Zeilenumbrüche in <br>Tags:

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

Sie können damit experimentieren, um zu sehen, was Ihnen besser gefällt.

Andernfalls können Sie die Zeichenfolgenmanipulation in Ihrer Ansicht verwenden, um Ihren Klartext auf eine Weise in HTML zu konvertieren, die besser zu Ihnen passt. Und wenn Sie wirklich fortgeschritten sein möchten, können Sie Ihren eigenen Filter schreiben, der nach Ihren Wünschen konvertiert, und ihn in Ihren Vorlagen verwenden.

Ned Batchelder
quelle
30

Ich bin mir nicht sicher, ob ich Ihre Frage vollständig verstehe, aber versuchen Sie es mit dem Zeilenumbruchfilter.

{{ value|linebreaks }}
David
quelle
Dies sollte die Antwort sein. Die Verwendung von <pre> </ pre> ist nur Mist.
Rahul