Nie jestem pewien, czy to naprawdę proste, a ja po prostu przejrzałem to w dokumentacji lub jeśli jest to ograniczenie systemu szablonów Django, ale muszę być w stanie zrobić trochę (niezbyt) zaawansowana logika w Django i wolałbym nie powtarzać się od nowa.Zaawansowana logika szablonowa Django
Załóżmy, że mam 3 wartości logiczne; A, B, i C.
I w zasadzie trzeba zrobić:
{% if A and (B or C) %}
{{ do stuff }}
{% endif %}
Jednak Django nie wydaje się, aby umożliwić grupowanie logikę (B or C)
z nawiasami. Czy istnieje sposób na zrobienie tego rodzaju grupowania w języku szablonów Django? Czy muszę zrobić wersję un-DRY tego, co byłoby:
{% if A and B %}
{{ do stuff }}
{% else %}
{% if A and C %}
{{ do the same stuff }}
{% endif %}
{% endif %}
Ah. Widzę. Jest to znacznie czystsze niż to, co napisałem, a nawet jeśli nie jest tak proste, jak używanie nawiasów, to przynajmniej jest ono dość suche. Dzięki! –
Jak dodać gałąź "else" bez jej duplikowania? –
@JoachimBreitner - jednym ze sposobów byłoby zanegowanie warunkowego, używając tożsamości '~ (A i B) == ~ A | ~ B' i '~ (A | B) == ~ A i ~ B'. Tak więc "{% jeśli nie A lub nie B, a nie C%} tu rozgałęziają się {% else%} {{do rzeczy}} {% endif%}'. To konwertuje wyrażenie na takie, w którym nieobjętościowe nawiązywanie priorytetów operatorów "nie", "i" oraz "lub" daje pożądaną logikę. –