当前位置: 首页 > 面试题库 >

Django模板无法循环defaultdict

利博远
2023-03-14
问题内容
import collections

data = [
  {'firstname': 'John', 'lastname': 'Smith'}, 
  {'firstname': 'Samantha', 'lastname': 'Smith'}, 
  {'firstname': 'shawn', 'lastname': 'Spencer'}, 
]

new_data = collections.defaultdict(list)

for d in data:
    new_data[d['lastname']].append(d['firstname'])

print new_data

这是输出:

defaultdict(<type 'list'>, {'Smith': ['John', 'Samantha'], 'Spencer': ['shawn']})

这是模板:

{% for lastname, firstname in data.items %}
  <h1> {{ lastname }} </h1>
  <p> {{ firstname|join:", " }} </p>
{% endfor %}

但是模板中的循环不起作用。什么都没有出现。它甚至没有给我一个错误。我怎样才能解决这个问题?应该显示姓氏和名字,像这样:

<h1> Smith </h1>
<p> John, Samantha </p>

<h1> Spencer </h1>
<p> shawn </p>

问题答案:

完成插入新值后,可以通过禁用defaultdict的默认功能来避免复制到新dict :

new_data.default_factory = None

说明

将在Django模板变量解析算法将尝试解析new_data.itemsnew_data['items']第一,使用时其解析为一个空列表defaultdict(列表)。

要禁用默认列表为空列表并让Django失败,new_data['items']然后继续尝试解析直到调用new_data.items(),可以将defaultdict的default_factory属性设置为None。



 类似资料:
  • 我有这样的疑问: 在模板中,我希望通过以下方式获取数据: 但不是产生数据作为: 它的结果是 发生了什么?我有理由在列表中存储数据。如何分别访问每个数据。谢谢 用途:颜色存储在数据字段中为:,因此我希望实现: 编辑类Hello(models.Model):用户=模型。外键(用户)数据=模型。字符域(最大长度=255)

  • 问题内容: 如何在Django模板中编写数字循环?我的意思是 问题答案: 我使用了一种简单的技术,该技术非常适合没有特殊标签且没有其他上下文的小情况。有时候这很方便

  • 问题内容: 这是我的代码: 但显示错误, 我能做什么 , 谢谢 问题答案: views.py: HTML:

  • 当在我的电子商务网站上呈现我的“产品”详细信息时,我希望我的for循环在满足三次条件后结束。 我希望第二个for循环,即中,一旦满足if条件,即满足三次。但是我设置为0的计数器会重复增加到1,而不是随着for循环递增。因为它里面有一个if条件,我也不能使用forloop.counter。我希望这个过程在第一个for循环的每次迭代中重复,即

  • 我需要在每个循环中生成唯一的id,而不是"城市选择" 我如何在这里生成它? 我需要一些像这样的ID: 输出:

  • 问题内容: 我在显示日期的django模板中有以下for循环。我想知道是否有可能在循环中迭代一个数字(在以下情况下为i)。还是我必须将其存储在数据库中,然后以days.day_number的形式查询? 问题答案: Django提供了它。你可以使用以下任一方法: 索引从1开始。 索引从0开始。 在模板中,你可以执行以下操作: