2012-07-25 25 views
5

Czy istnieje sposób umieszczenia znaku nowej linii w etykiecie pola formularza w Django? Wstawienie \n powoduje tylko nowy znak w kodzie HTML, a próba <br> wyświetla tylko takie znaki, jakie są. Czy istnieje odpowiednia operacja, którą mogę określić na tym polu?Newline w etykiecie pola formularza Django

Odpowiedz

14

Możesz użyć mark_safe, aby tag <br /> nie został zmieniony.

Jest to równoważne użyciu w szablonie safe, więc należy zachować ostrożność podczas obsługi wprowadzania danych przez użytkownika. Jeśli jest to zakodowany ciąg, to jest bezpieczny w użyciu.

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')) 
+0

Jest to dla stałej stałej, dzięki! –

+0

Myślę, że alternatywą jest użycie {{my_field.label | linebreaks}} w szablonie – Anupam

+0

@Aupupam, co jest dobrą sugestią, powinieneś dodać ją jako osobną odpowiedź. Inną opcją jest "linebreaksbr". – Alasdair

2

Można też to zrobić bezpośrednio w szablonie następująco:

{{my_field.label|linebreaks}} 

\n przekonwertuje do <br/> ten sposób

Jak na doc,

pojedyncza newline staje się przerywaną linią HTML (<br />) i nowej linii, a następnie pusta linia staje się akapitem (</p>).

Powiązane problemy