Python 分页不';不接受dict作为数据-不可损坏类型
我正在尝试使用Django分页。但我收到了这个错误:Python 分页不';不接受dict作为数据-不可损坏类型,python,django,django-views,python-2.x,django-pagination,Python,Django,Django Views,Python 2.x,Django Pagination,我正在尝试使用Django分页。但我收到了这个错误: TypeError at / unhashable type 这基本上是因为我使用字典作为我的对象,而不是查询集。 我想知道是否有办法将我的字典变成可哈希对象 这是我的dict in模板: {% for key, values in prodmatrix.items %}
TypeError at /
unhashable type
这基本上是因为我使用字典作为我的对象,而不是查询集。
我想知道是否有办法将我的字典变成可哈希对象
这是我的dict in模板:
{% for key, values in prodmatrix.items %} <li class="span3">
<div class="product-box">
<span class="sale_tag"></span>
<p><a href="{% url 'product_detail' slug=values.3.0 %}"><img src="{{ STATIC_URL }}{{values.1.0}}" alt="" /></a></p>
<a href="{% url 'product_detail' slug=values.3.0 %}" class="title"><h4>{{ values.0.0 }}</h4></a><br/>
<p class="category"><a href="{% url 'product_detail' slug=values.3.0 %}">{{values.2.}} {{values.2.1}} {{values.2.2}}</a></p>
</div>
</li>
{% endfor %}
使用
tuple
代替dict
,如下所示:
# convert `dict` to `tuple`:
prodmatrix = tuple(prodmatrix)
paginator = Paginator(prodmatrix, 2)
# or this
paginator = Paginator(prodmatrix.items(), 2)
page = request.GET.get('page')
try:
prodmatrix2 = paginator.page(page)
except PageNotAnInteger:
prodmatrix2 = paginator.page(1)
except EmptyPage:
prodmatrix2 = paginator.page(paginator.num_page)
return render(request, 'home.html',{'prodmatrix2':prodmatrix})
在模板中,您需要通过元组索引(key=0,value=1)调用attrs和方法。谢谢!我只是不知道模板中的代码会如何变化。我用模板中的dict代码更新了我的问题。它将如何改变?
items()
是一种dict
方法,但不是tuple
。您已经在tuple
中有了数据,并且不需要使用items()
方法{%for key,prodmatrix%}{{values.0.0}{{{values.1.1}{{values.1.2}{%endfor%}谢谢您,但是tuple仍然不起作用。我试图将其解析为values.0.0,但它返回“”作为结果如何检查分页中的has_previous()?非常好…节省了大量时间+1
# convert `dict` to `tuple`:
prodmatrix = tuple(prodmatrix)
paginator = Paginator(prodmatrix, 2)
# or this
paginator = Paginator(prodmatrix.items(), 2)
page = request.GET.get('page')
try:
prodmatrix2 = paginator.page(page)
except PageNotAnInteger:
prodmatrix2 = paginator.page(1)
except EmptyPage:
prodmatrix2 = paginator.page(paginator.num_page)
return render(request, 'home.html',{'prodmatrix2':prodmatrix})