Джанго хрустящие формы - фильтр переносов строк

Я хочу использовать разрывы строк filter с crispy forms в шаблон, с нормальной формой я обычно просто делаю:

{{ form|linebreaks }}

Однако crispy_form, который я отображаю, использует тег в шаблоне:

{% crispy_form %}

Как я могу использовать linebreaks filter с этим?


person crhodes    schedule 04.03.2015    source источник


Ответы (1)


Ничего не обнаружив в документах или где-либо еще, мне удалось решить эту проблему. В view я использовал объект Layout и django.template.defaultfilters.linebreaks_filter, чтобы заменить linebreaks в обычном тексте на HTML эквивалент. Например:

from django.template.defaultfilters import linebreaks_filter
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit

class ExampleForm(forms.Form):
[...]
def __init__(self, *args, **kwargs):
    self.helper = FormHelper()
    self.helper.form_method = 'post'
    self.helper.add_input(Submit('submit', 'Submit'))
    self.helper.layout = Layout(
        HTML('<p>{}</p>'.format(
            linebreaks_filter(some_text_with_line_breaks)
        )
    )
    super(ExampleForm, self).__init__(*args, **kwargs)

Тег шаблона {% crispy_form %} остается в шаблоне.

person crhodes    schedule 04.03.2015