2014-01-10 2 views
0

내 문제는 기본적으로 장고 템플릿에서 작동하지 않는 동일한 코드이지만 'python'작동합니다. 결과 dict의 키는 문자열이고 값은 'collections.Counter'유형입니다. 나는 장고 1.6.1을 사용하고있다. 여기에 코드를입니다코드가 템플릿에서 작동하지 않습니다

for k,v in results.items(): 
    for a,b in v.items(): 
     print a,':',b 

템플릿 : 내가 갖는

{% for k,v in results.items %} 
    {% for a,b in v.items %} 
     {{ a }}, {{ b }} 
    {% endfor %} 
{% endfor %} 

오류는 다음과 같습니다

'int' object is not iterable 

및 루프 라인에 대한 두 번째 가리키는. 어떻게 해결할 수 있습니까?

샘플 :

for k,v in results.items(): 
    print k,v 
    for a,b in v.items(): 
     print a,':',b 
OUTPUT: 
question1 Counter({u'1': 3, u'': 1, u'2': 1}) 
1 : 3 
: 1 
2 : 1 
question2 Counter({u'q': 3, u'': 1, u'w': 1}) 
q : 3 
: 1 
w : 1 
question3 Counter({u'a': 2, u'': 2, u's': 1}) 
a : 2 
: 2 
s : 1 
+1

당신은 샘플 입력 사전을 보일 수 있는가? (예를 들어, 첫 번째 코드 스 니펫의 출력)? – karthikr

+0

@karthikr이 추가되었습니다. – bonobo

+0

작동해야합니다 :'{%, a, b in v.iteritems %} '시도하십시오. – karthikr

답변

1

나는 ./manage.py shell에서 재현 :

from django.template import Context, Template 
from collections import Counter 

t = Template('{% for k,v in results.items %}{% for a,b in v.items %}[{{ a }}, {{ b }}]{% endfor %}{% endfor %}') 
c = Context({"results": {"question1": Counter({'1': 3, '': 1, '2': 1})}}) 
t.render(c) 

그리고 물론

나는 같은 오류를 얻을. for 키워드 내의 itemsdict.items에 대한 간단한 호출이 아니며 Counter을 지원하지 않기 때문입니다.

한번에 변환를 A dictCounter가 만든 Context :

from django.template import Context, Template 
from collections import Counter 

t = Template('{% for k,v in results.items %}{% for a,b in v.items %}[{{ a }}, {{ b }}]{% endfor %}{% endfor %}') 
c = Context({"results": {"question1": dict(Counter({'1': 3, '': 1, '2': 1}))}}) 
t.render(c) 

당신은 얻을 것이다 :

u'[1, 3][, 1][2, 1]' 
관련 문제