В Python има два начина за използване на if
и else
: или за булев контрол на потока, в който случай се използва с двоеточие и отстъп, или като израз на един ред, както е описано в https://www.pythoncentral.io/one-line-if-statement-in-python-ternary-conditional-operator/.
Доколкото мога да преценя, таговете {% if %}
... {% else %}
... {% endif %}
на Django Template Language са еквивалентни на първите. Въпреки това се чудех дали мога по някакъв начин да внедря последното, за да преработя кода по-долу:
<form action="" method="post">{% csrf_token %}
{% for field in form %}
{% if field.name == "checkin_type" %}
<div class="auto-submit">
{{ field.errors }}
{{ field.label_tag }}
{{ field }}
</div>
{% else %}
<div>
{{ field.errors }}
{{ field.label_tag }}
{{ field }}
</div>
{% endif %}
{% endfor %}
<input type="submit" value="Send message" />
</form>
Тук преминавам през полетата на формуляра и добавям конкретен клас, "auto-submit"
, към обхващащия <div>
елемент на конкретно поле ("checkin_type"
). Бих искал да преработя това по реда на следния „псевдокод“:
<form action="" method="post">{% csrf_token %}
{% for field in form %}
<div class="{% if field.name=='checkin_type'%}auto-submit{% else %}{% endif %}">
{{ field.errors }}
{{ field.label_tag }}
{{ field }}
</div>
{% endfor %}
<input type="submit" value="Send message" />
</form>
С други думи, бих искал да намаля повторението на кода, като използвам изрази if
...else
само в дефиницията на class
, като използвам един вид троичен оператор. Възможно ли е това в DTL?
Между другото, ако се опитам да заредя шаблона с кода по-горе, получавам TemplateSyntaxError
:
Не можа да се анализира остатъкът: '=='checkin_type'' от 'field.name=='checkin_type''
Може би просто трябва да направя правилно екранирането на цитата?