Условное утверждение шаблона Django - PullRequest
1 голос
/ 17 мая 2019

У меня есть условное утверждение ниже

{% if juice.slug != "slug-one" or "slug-two" %}
   rendering things if the page slug isn't slug-one or slug-two
{% endif %}

По какой-то причине этот условный оператор работает только тогда, когда он не является "slug-one", а не когда он не "slug-one" или "slug-two".

1 Ответ

1 голос
/ 17 мая 2019

Короткий ответ : используйте if juice.slug != "slug-one" and juice.slug != "slug-two".

Заявление juice.slug != "slug-one" or "slug-two" равно всегда Верно.Python оценивает истинность выражений, а непустая строка имеет истинность True.

Вы ищете условие:

{% if juice.slug != "slug-one" and <b>juice.slug != "slug-two"</b> %}
   rendering things if the page slug isn't slug-one or slug-two
{% endif %}

Итак, у вас естьдля восстановления части juice.slug !=, и оператор между ними - and, , а не or.Если мы используем or, то оператор по-прежнему всегда True, поскольку:

slug       | slug != "slug-one" |  slug != "slug-two" | with and | with or
--------------------------------------------------------------------------
"slug-one" | False              | True                | False    | <b>True</b>
"slug-two" | True               | False               | False    | <b>True</b>
other      | True               | True                | True     | True

Так что, если вы используете or, каждый раз, по крайней мере, одно из двух утверждений будет True,поскольку если строка равна "slug-one", то, конечно, она не равна "slug-two" и наоборот.

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