Python django-模板中仅返回第一个字符的元组?

Python django-模板中仅返回第一个字符的元组?,python,django,Python,Django,我试图访问django模板中的元组,但由于某些原因,我只看到了第一个字符,我认为这可能是因为使用了。返回子字符串,所以我去掉了off,在它上面什么也不返回 上下文处理器.py from django.conf import settings def ProviderUrls(request): return { 'circuit_providers': settings.PROVIDER_CHOICES, } 设置.py #CONSTANTS PROVIDER_C

我试图访问django模板中的元组,但由于某些原因,我只看到了第一个字符,我认为这可能是因为使用了。返回子字符串,所以我去掉了off,在它上面什么也不返回

上下文处理器.py

from django.conf import settings

def ProviderUrls(request):
    return {
    'circuit_providers': settings.PROVIDER_CHOICES,
    } 
设置.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>
当您以这种方式迭代circuit_提供程序时:

{% for key, tuple in circuit_providers %}
    ...
{% endfor %}
解压每个内部元组,键变成KCOM,元组变成KCOM,然后键变成BT,元组变成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
相反,我认为你的意思是:

{% for key, tuple in circuit_providers %}
  <li><a href="{% url 'management:provider' tuple %}">{{ tuple }}</a></li>
{% endfor %}