문제

내 견해에서, 나는 튜플의 두 번째 항목이 다음과 같은 또 다른 목록 인 두 튜플 목록을 작성하고 있습니다.

[ Product_Type_1, [ product_1, product_2 ],
  Product_Type_2, [ product_3, product_4 ]]

평범한 오래된 파이썬에서는 다음과 같은 목록을 반복 할 수 있습니다.

for product_type, products in list:
    print product_type
    for product in products:
        print product

Django 템플릿에서 똑같은 일을 할 수없는 것 같습니다.

{% for product_type, products in product_list %}
    print product_type
    {% for product in products %}
        print product
    {% endfor %}
{% endfor %}

Django 에서이 오류가 발생합니다.

렌더링하는 동안 예외가 발생했습니다 : Zip Argument #2는 반복을 지원해야합니다.

물론 템플릿에는 인쇄문이 아닌 HTML 마크 업이 있습니다. Django 템플릿 언어에서 튜플 풀이 지원되지 않습니까? 아니면 내가 이것에 대해 잘못된 방법으로 가고 있습니까? 내가하려는 모든 것은 간단한 객체의 계층 구조를 표시하는 것입니다. 여러 제품 유형이 있습니다. 각 제품은 여러 제품이 있습니다 (Models.py에는 제품에는 단순한 일대일 관계 인 Product_type에 대한 외국 키가 있습니다).

분명히, 나는 Django를 처음 접 했으므로 모든 입력에 감사 할 것입니다.

도움이 되었습니까?

해결책

{note '('and ')' '' ''[ '['및 ']' '' '' '', 하나는 튜플 용, 목록 용}과 같은 데이터를 구성하는 것이 가장 좋습니다.

[ (Product_Type_1, ( product_1, product_2 )),
   (Product_Type_2, ( product_3, product_4 )) ]

템플릿이 다음을 수행하도록하십시오.

{% for product_type, products in product_type_list %}
    {{ product_type }}
    {% for product in products %}
        {{ product }}
    {% endfor %}
{% endfor %}

루프에 대해 튜플/목록이 포장되지 않은 방식은 목록 반복자가 반환 한 항목을 기반으로합니다. 각 반복은 하나의 항목 만 반환되었습니다. 루프 주위에 처음으로 Product_Type_1, 두 번째 제품 목록 ...

다른 팁

또 다른 방법은 다음과 같습니다.

튜플 목록이 있다면 다음과 같이 말합니다.

mylst = [(a, b, c), (x, y, z), (l, m, n)]

그런 다음이 목록을 다음 방식으로 템플릿 파일로 포장 할 수 있습니다. 제 경우에는 URL, 제목 및 문서 요약이 포함 된 튜플 목록이있었습니다.

{% for item in mylst %}    
     {{ item.0 }} {{ item.1}} {{ item.2 }}    
{% endfor %}

이 방법을 사용해야합니다.

{% for product_type, products in product_list.items %}
    print product_type
    {% for product in products %}
        print product
    {% endfor %}
{% endfor %}

사전 데이터의 변수 항목을 잊지 마십시오

튜플에 고정 번호가있는 경우 인덱싱 만 사용할 수 있습니다. 사전을 혼합해야했고 값은 튜플이므로 다음과 같이했습니다.

관점에서 :

my_dict = {'parrot': ('dead', 'stone'), 'lumberjack': ('sleep_all_night', 'work_all_day')}

템플릿에서 :

<select>
  {% for key, tuple in my_dict.items %}
    <option value="{{ key }}" important-attr="{{ tuple.0 }}">{{ tuple.1 }}</option>
  {% endfor %}
</select>

템플릿을 제품 유형 목록을 보내고 다음과 같은 작업을 수행하십시오.

{% for product_type in product_type_list %}
    {{ product_type }}
    {% for product in product_type.products.all %}
        {{ product }}
    {% endfor %}
{% endfor %}

얼마 지나지 않아 구문이 무엇인지 정확히 기억할 수 없습니다. 그것이 작동하는지 알려주세요. 을 체크하다 선적 서류 비치.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top