2013-03-07 2 views
0

내 레이아웃에 따라 데이터를 표시하려면 dict 항목을 정렬하거나 html 테이블을 재구성해야합니다.특정 레이아웃을 만들기 위해 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> 

주문은 dicts의 목록입니다.

사전의 항목이 더 이상 특정 순서가 아니기 때문에 각 사전 항목을 적절한 열에 어떻게 넣을 수 있습니까?

여전히 열 머리글이 표시 될 때이를 표시해야합니다. 왼쪽에서 오른쪽으로 - "제목"은 첫 번째, "이름"초 등입니다.

바로 지금 도시는 제목 아래에 표시되고 수량은 수량 등으로 표시됩니다.

답변

1

열이 특정 순서로되어 있는지 확인하려면 항목의 키와 값을 확장하지 마십시오. 대신 도트 표기법을 사용하여 키를 기반으로 값을 찾습니다. 어떤 요소가 어떤 순서로 구성되는지는 이미 알고 있으므로 각 항목을 반복하고 필요한 순서대로 키에 액세스하여 각각을 적절한 열에 넣습니다. 장고 문서 (https://docs.djangoproject.com/en/1.4/topics/templates/#variables)는 사전 조회를 위해 점 표기법을 사용할 수 있습니다에 따르면

{% 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 %} 

. 따라서 일반적인 파이썬에서 item['title']과 같은 것을 사용하려면 Django 템플릿에서 {{ item.title }}을 통해 동일한 요소에 액세스합니다.

값이 비어 있으면 Django 템플릿 시스템이 혼란스럽지 않게됩니다. 빈/비어 있거나 존재하지 않는 값을 정상적으로 무시합니다 (따라서 데이터에 액세스할지 여부를 결정하기 위해 if 구문을 사용할 필요가 없습니다). 위의 링크 된 문서 당 : 존재하지 않는 변수를 사용하는 경우

는 템플릿 시스템은 기본적으로 (빈 문자열) ''로 설정되어 TEMPLATE_STRING_IF_INVALID 설정의 값을 삽입합니다. "

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

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

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