django два символа новой строки

Я новичок в джанго. У меня есть простой текст с большим количеством абзацев, который вводится в админке django. Это текст с болью, скопированный из Интернета

Пример ввода

A mysterious landscape phenomenon known as fairy circles has been found in the Australian outback. The fairy circles are characterised by a hexagonal organisation of soil gaps between grass vegetation and seen in the landscape from above.
The beautiful sight cannot be spotted from ground level. Until now, fairy circles have only been documented in the arid landscape of Namibia, Africa.

Пример вывода:

A mysterious landscape phenomenon known as fairy circles has been found in the Australian outback. The fairy circles are characterised by a hexagonal organisation of soil gaps between grass vegetation and seen in the landscape from above.


The beautiful sight cannot be spotted from ground level. Until now, fairy circles have only been documented in the arid landscape of Namibia, Africa.

когда я использую {{ posts.description|linebreaks }}, он просто дает мне один разрыв строки (один символ новой строки). В моей консоли Chrome это должно быть одно <br /> Но я хотел иметь 2 разрыва строки

Я пробовал использовать {{ posts.description|linebreaks|linebreaks }}, но не помогло

Как мне вставить два разрыва строки (два символа новой строки)?

Любая помощь приветствуется .. заранее спасибо


person Coeus    schedule 16.03.2016    source источник
comment
Вы можете напрямую сохранить 2 <br /> в posts.description (например, заменить \n) и применить фильтр safe в шаблоне   -  person schwobaseggl    schedule 16.03.2016
comment
Спасибо за ответ ... не могли бы вы привести пример, чтобы было легко понять ...   -  person Coeus    schedule 16.03.2016


Ответы (1)


Вы можете написать свой собственный тег, похожий на разрывы строк (возможно, даже скопируйте некоторые функции). Это очень просто, но на самом деле обескураживает - вот почему этого нет в стандартных фильтрах шаблонов django.

Но в противном случае вы даже можете разделить строку и отобразить как хотите:

Например, вы можете получить разделенное описание, как описано здесь. Затем отобразите описание следующим образом:

{% for line in posts.descirption_as_list %}
{{ line }}<br/><br/>
{% endfor %}

Если вы действительно хотите пойти по пути фильтров тегов шаблона:

@register.filter(name="split_by")
def split_by(value, split_by='\n'):
    return value.split(split_by)

И используйте его как

{% for line in posts.descirption|split_by:"\n" %}
{{ line }}<br/><br/>
{% endfor %}

В приведенном выше описании вам даже не нужно указывать второй аргумент («\ n»). То есть вы могли использовать его, как показано ниже:

{% for line in posts.descirption|split_by %}
{{ line }}<br/><br/>
{% endfor %}

Но сейчас это будет не очень удобно, не так ли? Выбирай с умом.

person zEro    schedule 16.03.2016
comment
@Coeus может помочь специальный фильтр, но не обязательно, как уже упоминалось. Если вы не хотите делать что-то действительно необычное, фильтры - это немного перегрузка: для разработчиков (я думаю). Зачем использовать теги фильтра для вещей, которые могут быть выполнены самим экземпляром? Хорошая причина может заключаться в следующем: я хочу повторно использовать это в другом месте (даже везде). Если это так, обязательно сделайте это. - person zEro; 16.03.2016