Django không hiển thị ký tự dòng mới khi hiển thị văn bản từ cơ sở dữ liệu


90

Tôi đang sử dụng Django để phát triển, lấy một số văn bản có chứa ký tự dòng mới từ cơ sở dữ liệu. Tuy nhiên, khi tôi kết xuất nó thành một mẫu bằng thẻ mẫu, nó không hiển thị ký tự dòng mới.

Vấn đề là gì?

Câu trả lời:


222

Bạn phải nhớ rằng các mẫu của bạn đang tạo ra HTML. Trong HTML, một ký tự dòng mới chỉ là một khoảng trắng khác, nó không có nghĩa là đặt văn bản sau vào một dòng mới. Có một số cách để buộc các dòng mới trong HTML.

Bạn có thể bọc văn bản của mình bằng một <pre>thẻ để HTML hiểu rằng nó đã được định dạng trước:

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

Bạn có thể sử dụng bộ lọc Django để chuyển đổi các dòng mới văn bản thuần túy của mình thành HTML. linebreaksbiến các dòng mới thành <br>thẻ và nhân đôi dòng mới thành <p>thẻ. linebreaksbrchỉ cần chuyển dòng mới thành <br>thẻ:

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

Bạn có thể thử nghiệm với những thứ này để xem bạn thích cái nào hơn.

Nếu không, bạn có thể sử dụng thao tác chuỗi trong chế độ xem của mình để chuyển văn bản thuần túy thành HTML theo cách phù hợp với bạn hơn. Và nếu bạn muốn thực sự nâng cao, bạn có thể viết bộ lọc của riêng mình để chuyển đổi theo cách bạn thích và sử dụng nó trong suốt các mẫu của bạn.



30

Không chắc liệu tôi có hoàn toàn hiểu câu hỏi của bạn hay không, nhưng hãy thử sử dụng bộ lọc ngắt dòng.

{{ value|linebreaks }}

Đây sẽ là câu trả lời. sử dụng <pre> </pre> chỉ là chuyện tào lao.
Rahul
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.