Скобки в выражении django if
Как я могу сделать это в шаблоне Django? В принципе, если A, или (B и C), я хочу показать некоторый HTML.
У меня в основном есть:
{% if user.is_admin или something.enable_thing и user.can_do_the_thing%}
Теперь это немного неоднозначно. Я пробовал делать
{% if user.is_admin или (something.enable_thing и user.can_do_thething)%}
Но вы не допустили скобки. Документы говорят использовать вложенные ifs (или elifs в этом случае, я думаю, как его OR), но я не хочу повторять один и тот же HTML внутри 2, если блоки, что звучит ужасно.
Ответы
Ответ 1
Как отметил Михай Замфир, он должен работать так, как ожидалось. Как документация Django упоминает:
Использование как и и или пункты в пределах одного тега допускается, и имеющие более высокий приоритет, чем или, например:
{% if athlete_list и coach_list или cheerleader_list%}
будет интерпретироваться так:
if (athlete_list и coach_list) или cheerleader_list
Ответ 2
вы можете выполнить проверку в своем представлении и передать флаг в контекст.
show_html = user.is_admin or (something.enable_thing and user.can_do_the_thing)
context['show_html'] = show_html
Затем в вашем шаблоне вы можете проверить флаг
{% if show_html %}