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 |

2つの質問があります:

<td>(1)例として、それぞれhtmlタグである2行目をどのようにループしますか?

(2)私の1行目は次のとおりですが、次のように出力されTue | Today | WedますToday | Tue | Wed |

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

ありがとう!

4

1 に答える 1

2

Pythonを使用していると仮定すると、ここで試すことができることが1つあります。これは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 に答える