2013-09-06 13 views
10

Ich habe eine einfache Form wie folgt aus:Flask: Wie Rendern der Zeilenumbruch in Vorlage?

class RecordForm(Form):  
    notes = TextAreaField('Notes') 

ich die Daten in drei Abschnitten wie folgt auf:

para1 

para2 

para3 

In der Vorlage würde Ich mag den Inhalt dieses Datensatzes in Read- sehen nur. (Nicht editierbar Form)

Rekord ist dieser Fall das Modell die Daten enthalten:

<td>{{ record.notes }}</td> 

->

<td>para1 para2 para3</td> 

Was kann ich tun, damit es die Multi-Linien zu zeigen?

Antwort

19

Alle Leerzeichen, einschließlich Zeilenumbrüche in einem einzigen Raum in HTML gedreht wird.

Ihre Optionen, vom besten zum schlechtesten:

  1. white-space: pre-wrap; auf dem enthaltenden Element Put. Dadurch wird HTML angewiesen, alle Leerzeichen genau so anzuzeigen, wie sie in der Quelle erscheinen, einschließlich Zeilenumbrüche. (Sie könnten auch ein <pre>-Tag verwenden, aber das wird auch das Wort-Wrapping deaktivieren, das Sie wahrscheinlich nicht wollen.)
  2. Behandeln Sie den einfachen Text als Markdown und werfen Sie einen Markdown-Prozessor bei it-einer der Dinge Markdown tut ist Wrap-Absätze in <p>.
  3. Im Python-Land, tun Sie .replace('\n', '<br>'). Aber das macht Sie anfällig für XSS, weil es möglicherweise andere HTML-ähnliche Junk in der Zeichenfolge, und das Fixieren ist ein bisschen Schmerz.
-1

wie etwa Laden Sie Ihre Daten mit <br/> Tag

para1 
<br/> 
para2 
<br/> 
para3 
+0

Aber wenn das Textfeld die Daten in das Modell speichert, fügt es diese sicher hinzu. Es muss einen besseren Weg geben, die Mehrfachlinien zu zeigen. – Houman

Verwandte Themen