It could be handy and provide better structure if and as well as or chaining were allowed in an if statement.
and and or should mix, because it would be ambiguous, thus raising a TemplateSyntaxError.
In this template:
{% if 1 and 1 %}good 1 and 1<br />{% endif %}
{% if 1 and 0 %}bad 1 and 0<br />{% endif %}
{% if 0 and 1 %}bad 0 and 1<br />{% endif %}
{% if 0 and 0 %}bad 0 and 0<br />{% endif %}
{% if 1 or 1 %}good 1 or 1<br />{% endif %}
{% if 1 or 0 %}good 1 or 0<br />{% endif %}
{% if 0 or 1 %}good 0 or 1<br />{% endif %}
{% if 0 or 0 %}bad 0 or 0<br />{% endif %}
should display:
good 1 and 1
good 1 or 1
good 1 or 0
good 0 or 1
and this template:
{% if 1 and 1 or 1 %}error 1 and 1 or 1<br />{% endif %}
should cause a TemplateSyntaxError (because and mixed with or).