Проверка соответствия подстроки в шаблоне django - PullRequest
0 голосов
/ 16 октября 2018

В моем шаблоне у меня есть:

{% if form.non_field_errors %}
<div class="alert alert-info" role="alert">
  {% if "already exists" in form.non_field_errors %}
    You've already submitted your request once. Please wait for confirmation, or email us at support@relsoft.in
  {% else %}
    {{ form.non_field_errors }}
  {% endif %}
</div>
{% endif %}

Кажется, что блок {% if "already exists" in form.non_field_errors %} не работает.Я получаю следующее в выводе:

<div class="alert alert-info" role="alert">      
  <ul class="errorlist nonfield"><li>Pendingclinics with this Name, Mobile and Email already exists.</li></ul>   
</div>

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

form.non_field_errors - это список строк, а не одна строка.

Итак, вы спрашиваете, есть ли 'already exists' в ['Pendingclinics with this Name, Mobile and Email already exists.'], что false.

Боюсь, вам придется сделать что-то более сложное, чтобы проверить, существует ли эта конкретная ошибка.

0 голосов
/ 16 октября 2018

Прежде чем перейти к этому ответу, обратите внимание на комментарий @DanielRoseman выше: Это действительно неправильный подход.Вы должны определить пользовательский метод clean () в вашей форме и вызвать там вашу конкретную ошибку.

Таким образом, хотя приведенный ниже код отвечает на ваш вопрос, но это НЕ лучшая практика!

form.non_field_errors - это список.Когда вы говорите

if s in form.non_field_errors

, это означает, что вы проверяете, содержит ли form.non_field_errors элемент, в точности равный s.Это не так в вашем коде.Ваш form.non_field_errors содержит элемент (строку), который сам содержит подстроку «уже существует».

Вы хотите просмотреть ошибки и проверить, содержит ли одна из них эту подстроку.Это похоже на мою логику, которую вы хотите использовать в представлении, а не на шаблоне.Например, в представлении:

was_submitted_before = any(["already exists" in s for s in form.non_field_errors])

Затем вы можете передать переменную was_submitted_before в свой шаблон, и в шаблоне вы можете проверить, верно ли это.

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