Tôi không chắc chắn nếu điều này là thực sự dễ dàng và tôi chỉ liếc qua nó trong tài liệu, hoặc nếu đây là một hạn chế của hệ thống mẫu Django, nhưng tôi cần để có thể làm một chút (không phải là rất) logic tiên tiến ở Django, và tôi không muốn phải lặp lại bản thân mình.Nâng cao Django Mẫu Logic
Giả sử tôi có 3 giá trị boolean; A, B, và C.
tôi về cơ bản cần thực hiện:
{% if A and (B or C) %}
{{ do stuff }}
{% endif %}
Tuy nhiên Django dường như không cho phép nhóm logic (B or C)
với dấu ngoặc đơn. Có cách nào để làm kiểu nhóm đó trong ngôn ngữ mẫu của Django không? Hay tôi cần phải làm những phiên bản un-DRY đó, đó sẽ là:
{% if A and B %}
{{ do stuff }}
{% else %}
{% if A and C %}
{{ do the same stuff }}
{% endif %}
{% endif %}
Ah. Tôi hiểu rồi. Đó là sạch hơn đáng kể so với những gì tôi đã viết, và thậm chí nếu nó không đơn giản như việc có thể sử dụng dấu ngoặc đơn, ít nhất nó khá DRY. Cảm ơn! –
Bạn sẽ thêm chi nhánh 'else' khác như thế nào mà không cần sao chép nó? –
@JoachimBreitner - một cách sẽ là phủ nhận điều kiện, sử dụng danh tính '~ (A & B) == ~ A | ~ B' và '~ (A | B) == ~ A & ~ B'. Vì vậy, '{% nếu không phải là A hoặc không B và không phải C%}, hãy chia nhánh ở đây {% else%} {{do stuff}} {% endif%}'. Điều đó chuyển đổi biểu thức thành một trong đó ưu tiên không được ưu tiên hóa của toán tử 'not',' và' và 'hoặc' cho logic mong muốn. –