Django não exibe caracteres de nova linha ao renderizar texto do banco de dados


90

Estou usando Django para desenvolvimento, recuperando algum texto contendo um caractere de nova linha do banco de dados. No entanto, quando eu o renderizo em um modelo usando uma tag de modelo, ele não mostra o caractere de nova linha.

Qual é o problema?

Respostas:


222

Você deve se lembrar de que seus modelos estão produzindo HTML. Em HTML, um caractere de nova linha é apenas outro espaço em branco, não significa colocar o texto a seguir em uma nova linha. Existem várias maneiras de forçar novas linhas em HTML.

Você pode envolver seu texto com uma <pre>tag para que o HTML entenda que está pré-formatado:

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

Você pode usar filtros do Django para converter suas novas linhas de texto simples em HTML. linebreakstransforma novas linhas simples em <br>marcas e novas linhas duplas em <p>marcas. linebreaksbrapenas transforma novas linhas em <br>tags:

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

Você pode experimentá-los para ver qual você gosta mais.

Caso contrário, você pode usar a manipulação de string em sua visualização para converter seu texto simples em HTML da maneira que mais lhe convier. E se você quiser realmente avançar, pode escrever seu próprio filtro que converte da maneira que você gosta e usá-lo em todos os seus modelos.



30

Não tenho certeza se entendi totalmente sua pergunta, mas tente usar o filtro de quebra de linha.

{{ value|linebreaks }}

Esta deve ser a resposta. usar <pre> </pre> é apenas uma porcaria.
Rahul
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.