Wenn jemand eine Phrase eingibt, wie zum Beispiel:
%Vor% (keine Leerzeilen zwischen jeder Zeile, aber der Text wird in drei separaten Zeilen geschrieben) in ein Textfeld auf einer Webseite und drückt dann eine Schaltfläche, die dann in einer Datenbank über Django
und diese Zeichenfolge gespeichert wird wird zurück gelesen und auf einer Seite gedruckt, wie kann ich es auf einer HTML-Seite mit den Zeilenumbrüchen noch im Text drucken lassen?
Also anstatt es als:
I see you driving round town with the girl I love, and I’m like: haiku.
Es würde wie folgt gedruckt:
%Vor% Ich weiß, dass ich bei Verwendung von (textarea)soAndSo.body(/textarea)
die Zeilenumbrüche aus der Datei beibehält, wenn der Benutzer sie ursprünglich eingegeben hat. Wie kann ich denselben Effekt erzielen, ohne textarea
boxes verwenden zu müssen?
Während die Zeilenumbruch-Symbole \r\n
mit einem <br/>
ersetzt werden, ist dies definitiv eine Option. Vielleicht sollten Sie css white-space
Eigenschaft :
Fiddled , erwähnenswert ist, dass die Eigenschaft wird überraschend gut unterstützt , sogar auf IE6 +
Wenn Sie die Ausgabe in <pre>
einpacken, wird die Formatierung beibehalten, <pre>soAndSo.body</pre>
Eine erweiterte Lösung besteht darin, die Zeilenumbrüche in HTML-Absätze oder Zeilenumbrüche umzuwandeln. Django hat dafür eingebaute Filter: Sowohl Zeilenumbrüche als auch linebreaksbr kann den Trick machen.
Wenn Sie diese verwenden möchten, filtern Sie die Ausgabe wie folgt: {{ soAndSo.body|linebreaks }}
Verwenden Sie linebreaksbr (oder Zeilenumbrüche ) in Ihrer Vorlage filtern.
Zum Beispiel:
{{ value|linebreaksbr }}
Wenn der Wert
Joel\nis a slug
ist, lautet die AusgabeJoel<br />is a slug
.
Die Zeilenumbrüche sind da, es macht einfach nichts in HTML.
Verwenden Sie einen Filter wie {{ content|linebreaksbr }}