Google App Engine将模板变量传递到带有数组的视图中

时间:2013-01-29 03:25:45

标签: python arrays google-app-engine templates

我的main.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)作为一个例子,我将如何遍历第2行,每行都是<td> html标签?

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

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

谢谢!

1 个答案:

答案 0 :(得分: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 %}

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

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

这可能与您当前的设置有所偏差,如有必要,请尽快调整。