Установка значения по умолчанию в цикле django for
Я застрял на довольно простой проблеме, где я пытаюсь либо установить значение переменной в цикле for, либо установить данные по умолчанию в N/a.
Я создал таблицу данных, которая собирает много данных, но мне нужно вернуть 2 переменные в N/a, если они не найдены в цикле for.
В примере кода ниже вы можете увидеть общий пример того, что я пытался сделать. В двух циклах for я пытаюсь установить глобальную переменную, к которой я смогу получить доступ вне цикла for.
Я немного почитал и просто не могу понять самый умный способ сделать это.
Отсюда я задаю вопрос здесь.
Пожалуйста, спрашивайте, если вам нужна дополнительная информация.
{% for vlan, macs in info.vlans.items %}
{% for mac in macs %}
{% endfor %}
{% endfor%}
{% if vlan %}
<td>{{vlan}}</td>
{% else %}
<td>N/a</td>
{% endif %}
{% if mac %}
<td>{{mac}}</td>
{% else %}
<td>N/a</td>
{% endif %}
Я также пытался установить значения в цикле for, но он не работает для тех, которым не назначен mac или vlan, так как он не устанавливает значение по умолчанию N/a.
{% for vlan, macs in info.vlans.items %}
{% if vlan %}
<td>{{vlan}}</td>
{% else %}
<td>N/a</td>
{% endif %}
{% for mac in macs %}
{% if mac %}
<td>{{mac}}</td>
{% else %}
<td>N/a</td>
{% endif %}
{% endfor %}
{% endfor%}
Сравните его с None, это должно помочь:
{% if mac is None %}
<td>N/a</td>
{% else %}
<td>{{mac}}</td>
{% endif %}
также вы можете попробовать встроенный фильтр default_is_none:
{{ mac|default_if_none:"N/a" }}
Я решил эту проблему, просто разделив их.
Вместо того, что я пытался сделать раньше, я просто упростил его. Это не самый чистый вид кода, но пока это работает.
{% for switch, port in result.items %}
{% for interface, info in port.items %}
{% for vlan, macs in info.vlans.items %}
{% for mac in macs %}
<tr>
<td>{{info.outlet}}</td>
<td>{{info.ruimte}}</td>
<td>{{switch}}</td>
<td>{{interface}}</td>
<td>{{ vlan|default_if_none:"N/a" }}</td>
<td>{{ mac|default_if_none:"N/a" }}</td>
{% endfor %}
{% endfor%}
{% endfor%}
{% endfor%}
{% for switch, port in result.items %}
{% for interface, info in port.items %}
<tr>
<td>{{info.outlet}}</td>
<td>{{info.ruimte}}</td>
<td>{{switch}}</td>
<td>{{interface}}</td>
<td>N/a</td>
<td>N/a</td>
Я хотел бы поблагодарить вас за помощь, я никогда не знал, что нельзя устанавливать/получать переменные в django.