Djangoテンプレートでこれをきれいに行うにはどうすればよいですか?基本的にA、または(BとC)の場合、HTMLを表示したいと思います。
私は基本的にこれを持っています:
{%if user.is_adminまたはsomething.enable_thingおよびuser.can_do_the_thing%}
さて、それは少し曖昧です。やってみた
{%if user.is_admin or(something.enable_thing and user.can_do_thething)%}
ただし、許可されている括弧はありません。ドキュメントでは、ネストされたif(またはこの場合はelif、ORとして)を使用すると言われていますが、2ifブロック内で同じHTMLを繰り返したくないので恐ろしいようです。
ミハイ・ザムフィールがコメントしたように、それは期待通りに機能するはずです。 Djangoドキュメントに記載されているように:
同じタグ内でandおよびor句の両方を使用でき、andよりも(= /// =)高い優先順位を持つまたは例:
_{% if athlete_list and coach_list or cheerleader_list %}
_
次のように解釈されます:
if (athlete_list and coach_list) or cheerleader_list
https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#boolean-operators
ビューでチェックを実行し、コンテキストにフラグを渡すことができます。
show_html = user.is_admin or (something.enable_thing and user.can_do_the_thing)
context['show_html'] = show_html
次に、テンプレートでフラグを確認できます
{% if show_html %}