web-dev-qa-db-fra.com

Django n'affiche pas de caractère de nouvelle ligne lors du rendu du texte à partir de la base de données

J'utilise Django pour le développement, en récupérant du texte contenant un caractère de nouvelle ligne dans la base de données. Cependant, lorsque je le rends dans un modèle à l'aide d'une balise de modèle, il n'affiche pas le caractère de nouvelle ligne.

Quel est le problème?

75
Nazmul Hasan

Vous devez vous rappeler que vos modèles produisent du HTML. En HTML, un caractère de nouvelle ligne n'est qu'un autre espace blanc, cela ne signifie pas de mettre le texte suivant sur une nouvelle ligne. Il existe plusieurs façons de forcer de nouvelles lignes en HTML.

Vous pouvez envelopper votre texte avec un <pre> tag pour que HTML comprenne qu'il est préformaté:

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

Vous pouvez utiliser les filtres Django pour convertir vos sauts de ligne en texte brut en HTML. linebreaks transforme les sauts de ligne simples en <br> tags, et double les sauts de ligne en <p> Mots clés. linebreaksbr transforme simplement les sauts de ligne en <br> Mots clés:

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

Vous pouvez les expérimenter pour voir ce que vous préférez.

À défaut, vous pouvez utiliser la manipulation de chaînes dans votre vue pour convertir votre texte brut en HTML d'une manière qui vous convient mieux. Et si vous voulez devenir vraiment avancé, vous pouvez écrire votre propre filtre qui convertit comme vous le souhaitez et l'utiliser dans vos modèles.

196
Ned Batchelder

Je ne sais pas si je comprends parfaitement votre question, mais essayez d'utiliser le filtre de sauts de ligne.

{{ value|linebreaks }}
21
David