2012-11-05 3 views
8

Se qualcuno digita una frase, come ad esempio:Come leggere e stampare il testo con newline da una stringa Python (Django) con HTML?

I see you driving 

round town with the girl I love, 

and I’m like: haiku. 

(senza righe vuote tra ogni riga, ma il testo è scritto su tre linee separate) in una casella di testo in una pagina web, e quindi preme un pulsante che viene quindi memorizzato in un database tramite Django e che la stringa viene riletta e stampata su una pagina, come posso farla stampare su una pagina HTML con le nuove righe ancora nel testo?

Così, invece di essere stampato di nuovo come: I see you driving round town with the girl I love, and I’m like: haiku.

Sarebbe stampare come:

I see you driving 

round town with the girl I love, 

and I’m like: haiku. 

So che se uso: (textarea)soAndSo.body(/textarea), questo conserva le nuove righe che erano nel file quando l'utente lo ha digitato originariamente. Come posso ottenere lo stesso effetto, ma senza dover usare le caselle textarea?

risposta

2

Avvolgendo l'uscita in <pre> manterrà la formattazione, <pre>soAndSo.body</pre>

Una soluzione più avanzata comporta trasformando le nuove righe in paragrafi HTML o interruzioni di riga. Django ha filtri integrati per questo: sia linebreaks sia linebreaksbr possono fare il trucco.

Se si desidera utilizzare quelli, filtrare l'output in questo modo: {{ soAndSo.body|linebreaks }}

2

utilizzare il filtro linebreaksbr (o linebreaks) nel modello.

Ad esempio:

{{ value|linebreaksbr }}

Se il valore è Joel\nis a slug, l'uscita sarà Joel<br />is a slug.

0

I newline sono lì, semplicemente non fa nulla in HTML.

Utilizzare un filtro come {{ content|linebreaksbr }}