2012-05-28 3 views
0

Django-template에서 사전 값을 가져올 수 없습니다. 이 두 사전과 subnet_network.html의 값을 얻을 수 views.pyDjango 템플릿에 사전을 전달하는 방법은 무엇입니까?

def subnet_network(request, page=None): 
    ipv4_sub_net , ipv6_sub_net= get_netmask(user=request.user) 
    extra_context = { 
     'ipv4_net': ipv4_sub_net, 
     'ipv6_net': ipv6_sub_net 
     } 
    return direct_to_template(request, 'networks/subnet_network.html', 
          extra_context=extra_context) 

을 보라.

<tbody> 
    {% for k,v in ipv4_net.items %} 
    <tr> 
     <td> 
      {{ v }} 
     </td> 
    </tr> 
    {% endfor %} 
</tbody> 

와 내가 pdb.set_trace()를 사용하여 사전에 제 값을 확인하는 동안 같은 위의 코드는 ipv6_net 사전 입니다 : 나는 다음과 같은 코드를 썼습니다. 다음과 같이 인쇄됩니다.

(Pdb) print ipv4_sub_net 
[{'ipv4_sub_net': u'255.0.0.0'}, {'ipv4_sub_net': u'255.255.255.255'}] 

(Pdb) print ipv6_sub_net 
[{'ipv6_sub_net': u'/12'}, {'ipv6_sub_net': u'/128'}] 

코드에 문제가 있습니까?

+1

을,'d.items'에서'd'은 무엇인가? 보기에서, 당신은 ipv4_net과 ipv6_net을 개별 vars로 전달하는 것처럼 보입니다. –

+0

오! 미안해! –

답변

4

print 문을 보면 두 개의 사전이 있고 두 개의 요소가있는 사전은 하나도 없습니다. 따라서 ipv4_sub_net.items가 유효하지 않습니다. 이렇게하면

당신이 그것을 볼 수 있습니다 : 템플릿에서

for v in ipv4_sub_net: 
    print v 
+0

답변 해 주셔서 감사합니다. 예, 그것이 목록이라는 것을 알아야합니다.하지만 템플릿에서 인쇄하는 방법은 ** {ipv4_net %에서 k에 대한 %} {{k}} **를 쓰는 것입니다. ** 이렇게 인쇄합니다. { 'ipv4_sub_net': u'255.0.0.0 '} {'ipv4_sub_net ': u'255.0.0.0'} **. 나는이 사전을 템플릿에 인쇄하는 법을 지금 말하고있다. –

+0

대답을 업데이트했다. –

관련 문제