Django non visualizza il carattere di nuova riga durante il rendering del testo dal database


90

Sto usando Django per lo sviluppo, recuperando del testo contenente un carattere di nuova riga dal database. Tuttavia, quando eseguo il rendering in un modello utilizzando un tag modello, non mostra il carattere di nuova riga.

Qual è il problema?

Risposte:


222

Devi ricordare che i tuoi modelli producono HTML. In HTML, un carattere di nuova riga è solo un altro spazio bianco, non significa mettere il testo seguente su una nuova riga. Ci sono diversi modi per forzare nuove righe in HTML.

Puoi racchiudere il tuo testo con un <pre>tag in modo che l'HTML capisca che è preformattato:

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

Puoi utilizzare i filtri Django per convertire le nuove righe di testo normale in HTML. linebreakstrasforma singole nuove righe in <br>tag e doppie nuove righe in <p>tag. linebreaksbrtrasforma solo le nuove righe in <br>tag:

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

Puoi sperimentare con questi per vedere quale ti piace di più.

In caso contrario, puoi utilizzare la manipolazione delle stringhe nella tua vista per convertire il tuo testo normale in HTML in un modo che ti si addice meglio. E se vuoi diventare davvero avanzato, puoi scrivere il tuo filtro che converte nel modo che preferisci e usarlo in tutti i tuoi modelli.



30

Non sono sicuro di aver capito completamente la tua domanda, ma prova a utilizzare il filtro delle interruzioni di riga.

{{ value|linebreaks }}

Questa dovrebbe essere la risposta. usare <pre> </pre> è solo una schifezza.
Rahul
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.