1

Mymain.py有以下变量:

'booking_times':
 {
   'Today': ['9:00', '12:00', '14:00', '15:00', '19:00', '20:00'],
   'Tue': ['9:00', '12:00', '14:00', '15:00', '19:00', '20:00'],
   'Wed': ['9:00', '12:00', '14:00', '15:00', '19:00', '20:00']
 }

在我看来,我想在表格中显示它们:

-----------------------
Today  | Tue   | Wed   | // line 1
9:00   | 9:00  | 9:00  | // line 2
12:00  | 12:00 | 12:00 |

我有两个问题:

(1) 作为一个例子,我将如何循环遍历每个都是<td>html 标记的第 2 行?

(2) 我的第 1 行如下,但它输出为Tue | Today | Wed而不是Today | Tue | Wed |

{% for day in booking_times %}
<td>{{day}}</td>
{% endfor %}

谢谢!

4

1 回答 1

2

假设您使用的是 Python,这是您可以尝试的一件事。请注意,这从您的变量设置略有不同开始booking_times,但希望这个概念是有意义的。一般的想法是,我们首先创建一个排序顺序,我们将使用它来对我们的值进行排序。然后,我们使用zip创建一个新的列表列表,该列表将以天开始,然后是每个后续列表中的小时。

booking_times = {
   'Today': ['9:00', '12:00', '14:00', '15:00', '19:00', '20:00'],
   'Tue': ['9:00', '12:00', '14:00', '15:00', '19:00', '20:00'],
   'Wed': ['9:00', '12:00', '14:00', '15:00', '19:00', '20:00']
 }

# Create a new booking_times variable that is a list-of-list,
# leading with the 'days' and followed by one list for each time
sorted_keys = ['Today', 'Tue', 'Wed']
booking_times = [sorted_keys] + zip(*(booking_times[s] for s in sorted_keys))

这是booking_times使用简单的迭代时此时的样子for row in booking_times: print row

['Today', 'Tue', 'Wed']
('9:00', '9:00', '9:00')
('12:00', '12:00', '12:00')
('14:00', '14:00', '14:00')
('15:00', '15:00', '15:00')
('19:00', '19:00', '19:00')
('20:00', '20:00', '20:00')

然后,您可以将该值传递到您的模板中,并以与上面基本相同的方式对其进行迭代:

{% for day in booking_times %}
   <tr>
   {% for item in day %}
       <td>{{ item }}</td> 
   {% endfor %}
   </tr>
{% endfor %}

我现在无法测试模板,但是当修改为使用简单的打印语句时,它会输出以下内容:

Today   Tue Wed
9:00    9:00    9:00
12:00   12:00   12:00
14:00   14:00   14:00
15:00   15:00   15:00
19:00   19:00   19:00
20:00   20:00   20:00

这可能与您当前的设置有一点偏差,因此很乐意在必要时进行调整。

于 2013-01-29T04:49:10.450 回答