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

时间:2016-06-23 15:28:21

标签: python django

我正在尝试访问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>

1 个答案:

答案 0 :(得分:2)

以这种方式迭代circuit_providers

{% for key, tuple in circuit_providers %}
    ...
{% endfor %}

解包每个内部元组,key变为KCOMtuple变为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