[英]Django template IF condition with logical breckets and precedence order
在我的 Django 模板中,我有
{% if object_not_readonly and user_is_worker or user_is_admin %}
Django 醫生告訴我
允許在同一個標簽中同時使用 and 和 or 子句,並且優先級高於 or
我認為這不是在 IF 子句中聲明邏輯優先級的明顯方式。
問題是:
是不是類似於 django 模板語言中的{% if object_not_readonly and ( user_is_worker or user_is_admin ) %}
條件,帶有明顯的子句,例如if A and (C or B) and (not Z)
?
目前尚不清楚您在這里問什么,或者您試圖通過示例語句實現什么結果:
{% if object_not_readonly and user_is_worker or user_is_admin %}
為了通過“允許在同一標記中同時使用 and 和 or 子句,並且優先級高於 or”來闡明它們在參考文檔中的含義,上述語句將被評估為:
{% if (object_not_readonly and user_is_worker) or user_is_admin %}
這與{% if object_not_readonly and ( user_is_worker or user_is_admin ) %}
為了絕對安全,我會這樣拆分:
{% if object_not_readonly %}
{% if user_is_worker or user_is_admin %}
...
{% endif %}
{% endif %}
根據文檔,如果您無法使用默認優先級解決問題,則必須使用嵌套 if。 正如亞當已經提到的:
{% if object_not_readonly %}
{% if user_is_worker or user_is_admin %}
...
{% endif %}
{% endif %}
https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#std-templatetag-if
在 if 標記中使用實際括號是無效的語法。 如果您需要它們來指示優先級,則應使用嵌套的 if 標記。 我希望它有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.