반응형
Django 템플릿은 defaultdict를 반복 할 수 없습니다.
import collections
data = [
{'firstname': 'John', 'lastname': 'Smith'},
{'firstname': 'Samantha', 'lastname': 'Smith'},
{'firstname': 'shawn', 'lastname': 'Spencer'},
]
new_data = collections.defaultdict(list)
for d in data:
new_data[d['lastname']].append(d['firstname'])
print new_data
출력은 다음과 같습니다.
defaultdict(<type 'list'>, {'Smith': ['John', 'Samantha'], 'Spencer': ['shawn']})
다음은 템플릿입니다.
{% for lastname, firstname in data.items %}
<h1> {{ lastname }} </h1>
<p> {{ firstname|join:", " }} </p>
{% endfor %}
하지만 내 템플릿의 루프가 작동하지 않습니다. 아무것도 나타나지 않습니다. 그것은 나에게 오류를주지 않는다. 이 문제를 어떻게 해결할 수 있습니까? 다음과 같이 이름과 함께 성을 표시해야합니다.
<h1> Smith </h1>
<p> John, Samantha </p>
<h1> Spencer </h1>
<p> shawn </p>
시험:
dict(new_data)
그리고 Python 2에서는 :) iteritems
대신 사용하는 것이 좋습니다.items
새 값 삽입이 완료되면 defaultdict 의 기본값 기능을 비활성화하여 새 dict에 대한 복사를 피할 수 있습니다 .
new_data.default_factory = None
설명
장고 템플릿 변수 해상도 알고리즘은 해결을 시도 할 것 new_data.items
으로 new_data['items']
사용할 때 빈 목록에있는 결의 먼저 defaultdict (목록) .
빈 목록에 대한 기본값 설정을 비활성화하고 Django가 실패하도록 new_data['items']
한 다음 호출 할 때까지 해결 시도를 계속하려면 defaultdictnew_data.items()
의 default_factory 속성 을 None 으로 설정할 수 있습니다 .
참고 URL : https://stackoverflow.com/questions/4764110/django-template-cant-loop-defaultdict
반응형
'Development Tip' 카테고리의 다른 글
C #에서 .ToString과 "as string"의 차이점 (0) | 2020.11.17 |
---|---|
Windows에 씬을 설치할 수 없음 (0) | 2020.11.17 |
@Transactional 주석없이 다른 메서드를 호출하는 @Transactional 메서드? (0) | 2020.11.17 |
TFS 2012 빌드 "경로에 대한 액세스가 거부 됨" (0) | 2020.11.17 |
Spring에서 .html 파일을 제공하는 방법 (0) | 2020.11.17 |