【问题标题】:Django template : Need 2 values to unpack in for loop; got 8Django 模板:在 for 循环中解压需要 2 个值;得到 8 个
【发布时间】:2019-01-09 00:38:04
【问题描述】:

通过我的观点,我收集了一些数据,我想将它们捆绑在一个值列表中,如下所示:

data = [(1,2,3,4,5,6,7,8),(1,2,3,4,5,6,7,8),(1,2,3,4,5,6,7,8)]

然后我会将其渲染到我的模板中以将数据解压缩到我的页面:

return render(request, 'accounts/page.html', {'data' : data})

模板如下:

{% for a,b,c,d,e,f,g,h in data %}
    <h3>{{a}}</h3>
    <h3>{{b}}</h3>
    #and so on
    #..
    <h3>{{h}}</h3>
{% endfor %}

所以我得到的错误是:

在 for 循环中解压需要 2 个值;得到了 8 个。

谁能找出这个错误的来源,或者有更好的方法来渲染数据包?

谢谢!

【问题讨论】:

  • list 永远不会被传递,因为上下文应该是一个将 names 映射到项目的 dictionary。所以这里 Django 永远不会知道有一个名为 list 的变量。
  • 你可以只使用嵌套循环。无论如何,它必须在打开包装时在引擎盖下做到这一点。
  • 我将尝试嵌套循环

标签: python django templates render


【解决方案1】:

注意不要使用 list 作为变量,因为它是 Python 类型对象(保留)
问题仅在于您的渲染:

my_list = [(1,2,3,4,5,6,7,8),(1,2,3,4,5,6,7,8),(1,2,3,4,5,6,7,8)]
return render(request, 'accounts/page.html', {'my_list': my_list})

【讨论】:

  • Thks @Wariored 实际上我很草率,我的渲染在实际程序中是正确的,这只是一个例子。这是我认为正确的真实渲染:args = {'form': form, 'annonces':annonces, 'rech':len(annonces)} // return render(request, 'accounts/page_recherche.html', args) .不过我还是有同样的问题:/
  • @Djamel 我可以看到你的整个视图吗?
  • 好的,我可以把它寄给你吗? (很抱歉堆栈溢出我不确定这里是否有消息服务)
  • 你可以问一个新问题。然后在此处发布链接作为评论
【解决方案2】:

传递给渲染的上下文应该是dict

return render(request, 'accounts/page.html', {'list': list})

【讨论】:

  • thks,我已经更新了问题,但问题仍然存在
【解决方案3】:

您需要压缩列表并将其作为字典传递:

list = zip([(1,2,3,4,5,6,7,8),(1,2,3,4,5,6,7,8),(1,2,3,4,5,6,7,8)])
return render(request, 'accounts/page.html', {'list':list})

【讨论】:

  • 你不需要压缩它,但dict部分是正确的。
  • thks,我已经更新了问题,但问题仍然存在
猜你喜欢
  • 2021-03-23
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 2013-10-26
  • 2021-03-11
  • 2014-07-12
  • 2014-05-24
相关资源
最近更新 更多