0

dict 項目をソートするか、HTML テーブルを何らかの方法で再編成して、独自のレイアウトに従ってデータを表示する必要があります。

<table>
    <tr>
        <th>title</th>
        <th>name</th>
        <th>quantity</th>
        <th>street 1</th>
        <th>street 2</th>
        <th>county</th>
        <th>city</th>
        <th>country</th>
        <th>postal</th>
        <th>shipping</th>
    </tr>

    {% for order in orders %}
    <tr>
        {% for key, value in order.items %}

        <td>
            {% if key == "title" %}
            {{value}}
            {% endif %}

            {% if key == "name" %}
            {{value}}
            {% endif %}

            {% if key == "quantity" %}
            {{value}}
            {% endif %}

            {% if key == "street1" %}
            {{value}}
            {% endif %}

            {% if key == "street2" %}
            {{value}}
            {% endif %}

            {% if key == "county" %}
            {{value}}
            {% endif %}

            {% if key == "city" %}
            {{value}}
            {% endif %}

            {% if key == "country" %}
            {{value}}
            {% endif %}

            {% if key == "postal" %}
            {{value}}
            {% endif %}

            {% if key == "shipping" %}
            {{value}}
            {% endif %}
        </td>


        {% endfor %}
    </tr>
    {% endfor %}
</table>

注文は辞書付きのリストです。

ディクショナリ内のアイテムは特定の順序ではなくなったため、各辞書アイテムを適切な列に配置するにはどうすればよいですか?

表示される列ヘッダーを表示する必要があります。左から順に、「タイトル」が 1 番目、「名前」が 2 番目などです。

現在、タイトルの下に都市、数量の下に名前などが表示されています。

4

2 に答える 2

1

列が特定の順序になっていることを確認しようとしている場合は、アイテムのキーと値を展開しないでください。代わりにドット表記を使用して、キーに基づいて値を検索します。どの要素がどの順序で配置されるかは既にわかっているので、各項目をループして、必要な順序でキーにアクセスし、それぞれを適切な列に配置します。

{% for order in orders %}
    <tr>
        {% for item in order.items %}
            <td>{{ item.title }}</td>
            <td>{{ item.name }}</td>
            <td>{{ item.quantity }}</td>
            <td>{{ item.street1 }}</td>
            <td>{{ item.street2 }}</td>
            <td>{{ item.county }}</td>
            <td>{{ item.city }}</td>
            <td>{{ item.country }}</td>
            <td>{{ item.postal }}</td>
            <td>{{ item.shipping }}</td>
        {% endfor %}
    </tr>
{% endfor %}

Django のドキュメント ( https://docs.djangoproject.com/en/1.4/topics/templates/#variables ) によると、辞書検索にドット表記を使用できます。したがって、通常の python のようなものを使用する場合は、Django テンプレートitem['title']を介して同じ要素にアクセスします。{{ item.title }}

また、値のいずれかが空白の場合、Django テンプレート システムは混乱しないことに注意してください。空/空白/存在しない値を適切に無視します (したがって、データにアクセスするかどうかを決定するために if 構造は必要ありません)。上記のリンクされたドキュメントによると:

存在しない変数を使用すると、テンプレート システムは TEMPLATE_STRING_IF_INVALID 設定の値を挿入します。この設定は、デフォルトで '' (空の文字列) に設定されています。"

于 2013-03-08T02:59:55.730 に答える
0
{% for order in orders %}
<tr>
    {% for key, value in order.items %}

    <td>
        {% if key == "title" %}
        {{order.title}}
        {% endif %}

        .............
    {% endfor %}
</tr>
{% endfor %}
于 2013-03-08T03:02:18.277 に答える