#python #django #formatting #newline
#python #django #форматирование #перевод строки
Вопрос:
Django предоставляет тег шаблона для прерываний строк, который работает аналогично функции PHP nl2br
.
Он работает хорошо, однако обрабатывает данный текст при каждом запросе, что является пустой тратой ресурсов. Я бы предпочел сделать это один раз, прежде чем сохранять его в базе данных.
Есть ли какая-либо эквивалентная функция для использования в представлении Django?
Комментарии:
1. Я бы посоветовал этого не делать. Что, если вы когда-нибудь захотите отобразить этот текст в виде обычного текста, а не HTML? С другой стороны, замена
n
на<br>
— это операция с линейным временем, поэтому она в основном так же эффективна, как простое чтение текста и его отображение. Вас не должны беспокоить такие накладные расходы, так как это может сэкономить вам 1-2% времени рендеринга (если только вы не выполнили профилирование и у вас есть что-то, что докажет мою неправоту).2. Это ненужная трата. Небольшой, но выполняется с каждым запросом. Вероятно, мне не нужно будет менять его обратно, но если я когда-нибудь это сделаю, это не будет большой проблемой.
Ответ №1:
Тег шаблона linebreaks — это просто оболочка вокруг функции разрыва строк из django.utils.html
, поэтому вы можете просто использовать ее напрямую.
Ответ №2:
На самом деле, если вы сохраняете его в базе данных … тогда результирующий дополнительный запрос добавит НАМНОГО больше накладных расходов к вашему циклу ответа на запрос, чем вы бы сэкономили, кэшируя выходные данные некоторого довольно эффективного преобразования текста Python.
Лучшим решением было бы кэширование представления. Django имеет большую поддержку для очень гибких механизмов кэширования.
Не будьте парнем или девушкой по преждевременной оптимизации. Особенно такие крошечные оптимизации. Большая часть вашего цикла ответа на запрос тратится на ожидание базы данных или на задержку в сети.