Django tidak menampilkan karakter baris baru saat merender teks dari database

90

Saya menggunakan Django untuk pengembangan, mengambil beberapa teks yang berisi karakter baris baru dari database. Namun, ketika saya merendernya ke template menggunakan tag template itu tidak menampilkan karakter baris baru.

Apa masalahnya?

Nazmul Hasan
sumber

Jawaban:

222

Anda harus ingat bahwa template Anda menghasilkan HTML. Dalam HTML, karakter baris baru hanyalah spasi kosong, itu tidak berarti meletakkan teks berikut ke baris baru. Ada beberapa cara untuk memaksa baris baru di HTML.

Anda dapat membungkus teks Anda dengan <pre>tag sehingga HTML akan memahami bahwa itu telah diformat sebelumnya:

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

Anda dapat menggunakan penyaring Django untuk mengubah baris baru teks biasa Anda menjadi HTML. linebreaksmengubah satu baris baru menjadi <br>tag, dan menggandakan baris baru menjadi <p>tag. linebreaksbrhanya mengubah baris baru menjadi <br>tag:

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

Anda dapat bereksperimen dengan ini untuk melihat mana yang lebih Anda sukai.

Jika gagal, Anda dapat menggunakan manipulasi string dalam tampilan Anda untuk mengubah teks biasa menjadi HTML dengan cara yang lebih sesuai untuk Anda. Dan jika Anda ingin benar-benar mahir, Anda dapat menulis filter Anda sendiri yang mengubah cara Anda suka, dan menggunakannya di seluruh template Anda.

Ned Batchelder
sumber
30

Tidak yakin apakah saya benar-benar memahami pertanyaan Anda, tetapi coba gunakan filter penggalan baris.

{{ value|linebreaks }}
David
sumber
Ini harus menjadi jawabannya. menggunakan <pre> </pre> hanyalah omong kosong.
Rahul