Wie kann man Text mit Zeilenumbrüchen aus einer Python (Django) Zeichenkette mit HTML lesen und drucken?

8

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?

    
user1801486 05.11.2012, 22:22
quelle

4 Antworten

4

Während die Zeilenumbruch-Symbole \r\n mit einem <br/> ersetzt werden, ist dies definitiv eine Option. Vielleicht sollten Sie css white-space Eigenschaft :

%Vor%

Fiddled , erwähnenswert ist, dass die Eigenschaft wird überraschend gut unterstützt , sogar auf IE6 +

    
o.v. 05.11.2012 22:58
quelle
2

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 }}

    
vicvicvic 05.11.2012 22:25
quelle
2

Verwenden Sie linebreaksbr (oder Zeilenumbrüche ) in Ihrer Vorlage filtern.

  

Zum Beispiel:

     

{{ value|linebreaksbr }}

     

Wenn der Wert Joel\nis a slug ist, lautet die Ausgabe Joel<br />is a slug .

    
Pavel Anossov 05.11.2012 22:25
quelle
0

Die Zeilenumbrüche sind da, es macht einfach nichts in HTML.

Verwenden Sie einen Filter wie {{ content|linebreaksbr }}

    
Yuji 'Tomita' Tomita 05.11.2012 22:26
quelle

Tags und Links