use*_*084 0 python dictionary jinja2 flask python-2.7
我使用从订单的默认字典这里.问题是我不知道如何访问对象.
我期待这样的事情应该奏效
{% for zone in data %}
{% for reservation in zone %}
{{reservation}} # 1 | 2| 3
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
数据有助于调试
{{data}}
OrderedDefaultDict(<type 'list'>, DefaultOrderedDict([('1', [<app.backoffice.models.Reservation object at 0x7f91c2c5ee10>, <app.backoffice.models.Reservation object at 0x7f91c2c732d0>, <app.backoffice.models.Reservation object at 0x7f91c2c73510>]), ('2', [<app.backoffice.models.Reservation object at 0x7f91c2c73790>, <app.backoffice.models.Reservation object at 0x7f91c32f9c50>]), ('3', [<app.backoffice.models.Reservation object at 0x7f91c2c733d0>, <app.backoffice.models.Reservation object at 0x7f91c2c73490>])]))
Run Code Online (Sandbox Code Playgroud)
{% for zone in data %}
{{zone}} # 1 | 2 | 3
{{zone[0]}} # 1 | 2 | 3
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
当你遍历一个字典(甚至是一个子类)时,你得到了密钥 ; 如果要循环嵌套对象,则必须先将该键转换为值:
{% for zone in data %}
{% for reservation in data[zone] %}
{{reservation}}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
由于您不显示zone密钥,您也可以遍历字典值(使用dict.itervalues()以避免创建冗余列表对象):
{% for reservations in data.itervalues() %}
{% for reservation in reservations %}
{{reservation}}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
或者dict.iteritems()用来获取密钥和值:
{% for zone, reservations in data.iteritems() %}
{{zone}}:
{% for reservation in reservations %}
{{reservation}}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
在您自己的尝试中,zone只被设置为每个键,在您的情况下是单字符串('1','2'和'3').循环单个字符串或索引该字符串zone[0]只会导致显示一个字符.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |