Фильтр шаблонов Django - PullRequest
       1

Фильтр шаблонов Django

0 голосов
/ 01 августа 2011

У меня такая ситуация кода

{% if 1 | floatformat in '7,10'%} да {% else%} нет {% endif%}

возвращаемый результат всегда установлен на «да», как сделать так, чтобы результат возвращался «нет» пожалуйста помоги. спасибо

Ответы [ 2 ]

1 голос
/ 01 августа 2011

Трудно понять из вашего примера, что именно здесь происходит, потому что вы подставляете фиктивные данные для того, что действительно выходит из базы данных.

Как вы уже написали, результатом всегда будет «да», потому что строка «7,10» содержит строку «1».

Это звучит как то, что вы пытаетесь достичь, это:

Если этот номер находится в этом списке, тогда да, в противном случае нет.

Итак, давайте перепишем этот шаблон, чтобы он был немного более реальным:

{% if mynumber in yeslist %} yes {% else %} no {% endif %}

Это предполагает, что:

  • mynumber - это число
  • yeslist - список чисел

Я не уверен, для чего вы используете floatformat в этом случае.

Если вышеприведенные утверждения не соответствуют действительности, и вам нужно использовать строки, то ваша работа намного сложнее, и вы должны обрабатывать yeslist на стороне сервера. Например, если yeslist - это просто строка типа «7,10,123,93,9,19,83», то выяснить, находится ли число 8 в списке, будет излишне сложно в шаблонах. Гораздо проще сделать это на ваш взгляд:

def myview(request):
    ctx = {}
    # ... do some work ...
    # yeslist now has a string like "7,10,123,93,9,19,83"
    ctx['yeslist'] = yeslist.split(',')
    # ... do more work, and render the response ...

Теперь {% if '8' in yeslist %} больше не будет возвращать ложный положительный результат, потому что он не выполняет сопоставление подстроки, он делает членство в списке.

0 голосов
/ 01 августа 2011

1|floatformat возвращает 1, и условие проверяет, находится ли 1 в '7,10', поскольку django рассматривает '7,10' как строку, возвращает True. Попробуйте передать список, и он не вернет

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