Django Template:key,for循环中不可能的值

时间:2017-09-26 23:31:17

标签: python django django-templates django-views

我收到错误:

需要2个值来解包for循环;得到1。

这是我的视图

class Index(View):
    def get(self, request, slug):
        test = {
            1: {
                'id': 1,
                'slug': 'test-slug-1',
                'name': 'Test Name 1'
            },
            2: {
                'id': 2,
                'slug': 'test-slug-2',
                'name': 'Test Name 2'
            }
        }
        context = {
            'test': test
        }
        return render(request, 'wiki/category/index.html', context)

这是我的模板

{% block content %}
    <div>
        {{ test }}
        <ul>
            {% for key, value in test %}
                <li>
                    <a href="#">{{ key }}: {{ value }}</a>
                </li>
            {% endfor %}
        </ul>
    </div>
{% endblock %}

我也尝试过这样的模板:

{% block content %}
    <div>
        {{ test }}
        <ul>
            {% for value in test %}
                <li>
                    <a href="#">{{ value }}: {{ value.name }}</a>
                </li>
            {% endfor %}
        </ul>
    </div>
{% endblock %}

然后没有错误,但{{ value }}显示密钥(这很好),但{{ value.name }}没有显示任何内容。虽然{{ test }}显示我的字典。

2 个答案:

答案 0 :(得分:15)

循环字典的项目以获取键和值:

{% for key, value in test.items %}

答案 1 :(得分:0)

不熟悉Django。但是,默认情况下,Python会迭代字典的键。我也假设您正在使用Python2。要获取值,您需要执行以下操作:

{%for test.itervalues()%}

如果你想要两者,你需要做:

{%for key,test.iteritems()%}中的值

这将为您提供密钥和价值。