Установка значения по умолчанию в цикле 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.

Вернуться на верх