Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django使用字典分页,其中键是列表_Python_Django_Dictionary_Pagination - Fatal编程技术网

Python Django使用字典分页,其中键是列表

Python Django使用字典分页,其中键是列表,python,django,dictionary,pagination,Python,Django,Dictionary,Pagination,我在views.py文件中有一个字典,其中的值是列表。在我的模板中,我有以下html: {% for key, values in my_dict %} <tr> <td colspan="6" class="key">{{ key }}</td> </tr> {% for value in values %} <tr> <td colspan="6"

我在
views.py
文件中有一个字典,其中的值是列表。在我的模板中,我有以下html:

{% for key, values in my_dict %}
    <tr>
        <td colspan="6" class="key">{{ key }}</td>
    </tr>
    {% for value in values %}
        <tr>
            <td colspan="6" class="value">{{ value }}</td>
        </tr>
    {% endfor %}
{% endfor %}
我将我的模板更新为
{%for key,value in page%}
,当然我得到了一个TypeError,因为它是一个可哈希类型。我只是想知道我怎样才能不使用字典而产生与以前相同的结果


我发现这建议使用元组而不是字典,但这似乎对我不起作用,我猜是因为我的值是列表。

我不确定这是否算是一个好答案,但无论如何:我刚刚尝试用
元组复制你的问题和解决方案,结果成功了。所以我认为问题可能出在你的代码中。我的测试代码:

>>> from django.core.paginator import Paginator
>>> d = {'a': [1,2], 'b': [3,4]}
>>> p = Paginator(d, 1)
>>> p1 = p.page(1)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unhashable type
>>> t = tuple(d.items())
>>> t
(('a', [1, 2]), ('b', [3, 4]))
>>> p = Paginator(t, 1)
>>> p.page(1).object_list
(('a', [1, 2]),)
>>> p.page(2).object_list
(('b', [3, 4]),)
>>来自django.core.paginator导入paginator
>>>d={'a':[1,2],'b':[3,4]}
>>>p=分页器(d,1)
>>>p1=第页(1)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:不可损坏的类型
>>>t=元组(d.items())
>>>t
(('a',[1,2]),('b',[3,4]))
>>>p=分页器(t,1)
>>>第(1)页。对象列表
((‘a’,[1,2]),)
>>>第(2)页,对象列表
((‘b’,[3,4]),)

更新:循环也可以工作。那么,您能展示一下您有哪些结构吗?

列表是键还是值?你提到了这两种情况(开头和结尾)。哎呀,我的错,我现在就来解决。值是列表,键是单个对象。这是一个测试套件对象映射到它的测试用例对象列表(如果相关的话)。这绝对是我的代码。我有
tuple(d)
而不是
tuple(d.items())
,我还使用了
t[1]
而不是
t(1)
。我会看看是否能用你的答案让它工作,然后告诉你。@steveclark
tuple(d)
给你
('a','b')
,所以只需按键。是的,我很难找到答案哈哈。不管怎样,你的解决方案奏效了。此外,如果有人发现自己在模板中,您需要使用
{%p.page(1).object_list.0%}
访问键(.1表示值)。使用
[i]
编制索引不起作用。@实际上括号在模板中也不起作用,但我猜您的意思是
{{page\u object.object\u list.0}
。您也可以跳过
object\u列表
,只需编写
{{page\u object.0.0}
{{page\u object.0.1}
>>> from django.core.paginator import Paginator
>>> d = {'a': [1,2], 'b': [3,4]}
>>> p = Paginator(d, 1)
>>> p1 = p.page(1)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unhashable type
>>> t = tuple(d.items())
>>> t
(('a', [1, 2]), ('b', [3, 4]))
>>> p = Paginator(t, 1)
>>> p.page(1).object_list
(('a', [1, 2]),)
>>> p.page(2).object_list
(('b', [3, 4]),)