Django - Добавление части строки на новую строку не работает правильно - PullRequest
0 голосов
/ 01 ноября 2019

В моем проекте Django, если пользователь делает ошибку при регистрации, тогда ошибка отправляется в мой шаблон и затем отображается. Некоторые из моих сообщений об ошибках, которые я отправляю пользователю, немного длинны, и поэтому я хочу начать новую строку в тексте. Я пытаюсь добавить \ n в текст, но новая строка не начинается.

Вот мой код: views.py:

return render(request, 'users/signup.html', {'error': 'Username field must be \n a minimum of 5 characters'})

signup.html:

 {% if error %}
            <span class="errorspansignup"> {{ error }} </span>
    {% endif %}

Текст, который я передаю как error , остается в одной строке.

Кто-нибудь знаетв чем проблема? Спасибо.

Ответы [ 3 ]

2 голосов
/ 01 ноября 2019

Использовать разрывы строк фильтр

Например:

{{ error|linebreaks  }}

Если error равен Username field must be \n a minimum of 5 characters, выход будет <p>Username field must be <br> a minimum of 5 characters</p>.

1 голос
/ 01 ноября 2019

Рабочее решение для вышеуказанной ситуации:

Используйте тег <br> в строке ошибки, как показано ниже ( views.py ):

return render(request, 'users/signup.html', {'error': 'Username field must be <br> a minimum of 5 characters'})

И используйтеrichtext фильтр в шаблоне ( signup.html ):

{% load wagtailcore_tags ... %}
...
{% if error %}
        <span class="errorspansignup"> {{ error|richtext }} </span>
{% endif %}

Примечание: Чтобы загрузить richtext фильтр, нам нужно загрузить wagtailcore_tags.

1 голос
/ 01 ноября 2019

Вы можете сделать это двумя способами. 1) Предполагая, что \n в переданном словаре соответствует новой строке и в html \n мало помогает, поэтому может заменить \n на &13; или <br>, что приведет к переносу оставшейся части текста вновая строка. В этом конкретном случае вы можете попробовать это:

return render(request, 'users/signup.html', {'error': 'Username field must be &#13; a minimum of 5 characters'})

или

return render(request, 'users/signup.html', {'error': 'Username field must be <br> a minimum of 5 characters'})

2) или вы можете попробовать использовать CSS whitespace в шаблоне, установив его как предварительный или предварительно-wrap, который будет обернуть текст в соответствии с соответствующими условиями. Здесь вы можете попробовать это:

{% if error %}
        <span style="white-space: pre-line;"class="errorspansignup"> {{ error }} </span>
{% endif %}

Попробуйте это и посмотрите, сработает ли какой-либо из вышеперечисленных двух вариантов. Не стесняйтесь задавать дополнительные сомнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...