Bottle: Absätze in textarea

Django, Flask, Bottle, WSGI, CGI…
Antworten
seishin
User
Beiträge: 87
Registriert: Montag 19. Dezember 2011, 16:42

Wie ist das eigentlich mit einer textarea und einem Absatz...

Sprich ich habe folgendes html Element in meinem Template:

Code: Alles auswählen

<textarea rows="2" cols="20"></textarea>
Das wird dann gespeichert in einer sqlite db, in der db ist die Spalte vom Typ TEXT.

Jetzt das Problem:
Wenn ich den Text wiederum anzeige (nicht in der textarea / zum bearbeiten / da funktioniert die nämlich), sondern einfach als Inhalt...
Sind jegliche Absätze verloren und es ist eine einzige String-Wurst...
Angezeigt wirds durch:

Code: Alles auswählen

%for row in master:
    inhalt: {{row[3]}}
%end
Ja, ich hätte aber natürlich gern das er die Absätze beachtet...
(was ich ebenfalls schon probiert habe... da einfach mal mit html rein zu knallen <br> ja das gibt er dann auch einfach zurück...)

Danke für eure Hilfe!

Beste Grüße
sei
Zuletzt geändert von Anonymous am Freitag 29. Juni 2012, 13:43, insgesamt 1-mal geändert.
Grund: Abgetrennt von http://www.python-forum.de/viewtopic.php?f=9&t=19451&start=570
BlackJack

@seishin: Es gibt keine Absätze in ``<textarea>``. Du gibst da Zeilenumbrüche ein, und die werden auch übertragen und bei Dir in der DB gespeichert. Wenn Du das einfach so in den HTML-Quelltext steckst, zeigt der Browser die Zeilenumbrüche so an, wie er das halt für gewöhnlich tut (ausserhalb von ``<pre>``) — nämlich gar nicht. Wenn Du Absätze haben möchtest, musst Du diese entsprechend im Text identifizieren und zwischen ``<p>``-Tags stecken.
deets

Das ist wohl kaum der richtige Thread dafuer, oder? Vielleicht splittet einer der Moderatoren das raus.

Und die Antwort ist recht simpel: HTML kennt kein newline. Entweder du packst den Text in ein <pre>-tag, oder du machst das, was du selbst schon angedeutet hast. Dann musst du aber natuerlich sicherstellen, dass die Templating-Engine das auch als HTML und nicht als Text behandelt, der escaped wird:

http://bottlepy.org/docs/dev/stpl.html# ... statements
seishin
User
Beiträge: 87
Registriert: Montag 19. Dezember 2011, 16:42

ja, hätte ich evtl. erwähnen sollen ist halt bottlepy...

Vielen Dank! pre tut genau was es soll.

EDIT: Ach schau an... in den Comments.
One of the SimpleTemplate options allows you to define your own HTML escape function.

SimpleTemplate(my_template, escape_func=my_html_escape)
bottle includes a basic html_escape function that is used by default but can be expanded as needed. For instance, if you want all newlines to get turned into <br> you can create a function like so:

def my_html_escape(string):
return bottle.html_escape(string).replace("\n", "<br>")

Handy!
*Ian Epperson
http://bottlepy.org/docs/dev/stpl.html# ... statements
Antworten