Ответ 1
Все пробелы, включая символы новой строки, превращаются в одно пространство в HTML.
Ваши варианты, от лучшего к худшему:
- Поместите
white-space: pre-wrap;
в содержащийся элемент. Это говорит HTML, чтобы показать все пробелы точно так, как они появляются в источнике, включая новые строки. (Вы также можете использовать тег<pre>
, но это также отключит перенос слов, который вам, вероятно, не нужен.) - Обращайтесь с обычным текстом как Markdown и бросаем на него процессор Markdown - одна из вещей, которую Markdown делает, - это обертывание абзацев в
<p>
. - В Python-land сделайте
.replace('\n', '<br>')
. Но это оставляет вас уязвимым для XSS, потому что в строке может быть другой нежелательный HTML-код, а исправление - это немного боль.