Gibt es eine Möglichkeit, eine neue Zeile in die Bezeichnung eines Formularfeldes in Django zu setzen? Das Setzen einer \n
führt nur zu einer neuen Zeile im HTML-Code, und wenn Sie <br>
versuchen, werden nur die Zeichen so angezeigt, wie sie sind. Gibt es eine entsprechende |safe
Operation, die ich auf dem Feld angeben kann?Newline in Etikett für Django Formularfeld
5
A
Antwort
14
Sie können mark_safe
verwenden, damit das Tag <br />
nicht maskiert wird.
Es entspricht der Verwendung von safe
in der Vorlage, also seien Sie vorsichtig, wenn Sie mit Benutzereingaben umgehen. Wenn es sich um eine fest codierte Zeichenfolge handelt, ist es sicher zu verwenden.
from django import forms
from django.utils.safestring import mark_safe
class MyForm(forms.Form):
my_field = forms.CharField(label=mark_safe('my label<br />next line'))
2
Sie können dies auch in der Vorlage direkt wie folgt vorgehen:
{{my_field.label|linebreaks}}
\n
wird <br/>
konvertieren, die Art und Weise
Gemäß der doc,
eine einzige newline wird zu einem HTML-Zeilenumbruch (
<br />
) und eine neue Zeile, gefolgt von eine Leerzeile wird zu einem Absatzumbruch (</p>
).
Es ist für eine fest codierte Konstante, danke! –
Ich denke, eine Alternative ist die Verwendung von {{my_field.label | linebreaks}} in der Vorlage – Anupam
@Anupam, das ist ein guter Vorschlag, Sie sollten es als separate Antwort hinzufügen. Eine andere Option ist 'linebreak '. – Alasdair