我正在尝试访问django模板中的元组但由于某种原因我只看到第一个字符,我认为这可能是因为使用。#返回子字符串,所以我接受#off,之后它什么也没有返回在所有
context_processors.py
from django.conf import settings
def ProviderUrls(request):
return {
'circuit_providers': settings.PROVIDER_CHOICES,
}
settings.py
#CONSTANTS
PROVIDER_CHOICES = (
('KCOM','KCOM'),
('BT','BT'),
('EE','EE'),
('THREE','THREE'),
('TALK TALK','TALK TALK'),
)
模板
<div class="sidebar">
<h3>Management Menu</h3>
<ul>
{% for key, tuple in circuit_providers %}
<li><a href="{% url 'management:provider' tuple.0 %}">{{ tuple.0 }}</a></li>
{% endfor %}
</ul>
</div>
答案 0 :(得分:2)
以这种方式迭代circuit_providers
:
{% for key, tuple in circuit_providers %}
...
{% endfor %}
你解包每个内部元组,key
变为KCOM
,tuple
变为KCOM
,然后key
变为{ {1}},BT
变为tuple
等。
当你BT
时,你基本上得到字符串中的第一个字符,{{ tuple.0 }}
为K
。
为了证明这一点,请参阅:
KCOM
相反,我认为你的意思是:
>>> for key, tuple in PROVIDER_CHOICES:
... print(tuple)
...
KCOM
BT
EE
THREE
TALK TALK
>>> for key, tuple in PROVIDER_CHOICES:
... print(tuple[0])
...
K
B
E
T
T