[Python] Parenthèses dans une instruction django if



Answers

vous pourriez faire le contrôle dans votre vue et passer un drapeau au contexte.

show_html = user.is_admin or (something.enable_thing and user.can_do_the_thing)
context['show_html'] = show_html

Ensuite, dans votre modèle, vous pouvez vérifier le drapeau

{% if show_html %}

Question

Comment puis-je le faire proprement dans un template Django? Fondamentalement, si A, ou (B et C), je veux montrer du HTML.

J'ai essentiellement ceci:

{% si user.is_admin ou quelquechose.enable_thing et user.can_do_the_thing%}

Maintenant, c'est un peu ambigu. J'ai essayé de faire

{% if user.is_admin ou (something.enable_thing et user.can_do_thething)%}

Mais vous ne pouvez pas autoriser les parenthèses. Les docs disent d'utiliser ifs imbriqués (ou elifs dans ce cas, je suppose, comme un OR), mais je ne veux pas répéter le même HTML à l'intérieur de 2 si les blocs, ce qui sonne horrible.




Links