如何在Django模板中干净利落地完成这项工作?基本上如果是A,或者(B和C),我想展示一些HTML。
我基本上有这个:
{%if user.is_admin或something.enable_thing and user.can_do_the_thing%}
现在,这有点暧昧。我试着做了
{%if user.is_admin或(something.enable_thing and user.can_do_thething)%}
但你不允许括号。文档说使用嵌套ifs(或者在这种情况下是elifs,我猜,因为它是一个OR),但我不想在块内重复相同的HTML,这听起来很糟糕。
答案 0 :(得分:14)
正如Mihai Zamfir评论的那样它应该按预期工作。正如Django文档所述:
允许在同一标记中使用和以及或子句,和具有更高优先级比或例如:
{%if athlete_list and coach_list or cheerleader_list%}
将被解释为:
if(athlete_list和coach_list)或cheerleader_list
答案 1 :(得分:7)
您可以在视图中进行检查,并将标记传递给上下文。
show_html = user.is_admin or (something.enable_thing and user.can_do_the_thing)
context['show_html'] = show_html
然后在你的模板中你可以检查标志
{% if show_html %}