因此,对于一项任务,我的任务是建立一个程序,根据用户输入的数据(他们想去的车站、他们想去的车站、日期和时间)显示实时列车信息。当收集这些信息并将其解析为api时,我会抓取站台号、发车时间、列车公司等数据,并将每个值放在自己的列表中,放在自己的索引位置(例如,每个站台号将放在称为platformnumber的列表中,放在自己的位置['2'、'12'、'4'])
一旦我在列表中有了所有这些数据,由于我编程的方式,所有列表中索引[0]处的所有数据都匹配在一起,与索引[1]相同,依此类推。我的问题是,我需要将这些数据显示在我的HTML页面上,每列火车在自己的线路上显示站台号、操作员姓名和发车时间。下面是我到目前为止的代码,以及我到目前为止取得的进展的屏幕截图
到目前为止,我通过循环浏览站台列表,并为每个站台制作一个新段落(站台的数量始终与火车的数量相同),这很好,因为我有我需要的合适数量的线路。然而,由于我的其余数据也在列表中,我不能一直在循环中添加循环来获取数据。这是我的问题
下面是我用来将api中的值存储到列表中的代码。这会将每个序列的数据存储在每个列表中自己的索引位置(即第一个序列的数据将全部位于每个列表的索引0中)(此处的一些变量可以忽略,因为它们与此问题无关)
date = parsed["date"]
stationname = parsed["station_name"]
time = parsed["time_of_day"]
departures = parsed["departures"]
platformnumber = []
destinationstation = parsed["departures"]["all"][0]["destination_name"]
operatorname = []
departuretime = []
trainuid = []
for i in departures["all"]:
for k, v in i.items():
if k == "platform":
platformnumber.append(v)
elif k == "aimed_departure_time":
departuretime.append(v)
elif k == "operator_name":
operatorname.append(v)
elif k == "train_uid":
trainuid.append(v)
return render_template('timetable.html', date=date, station=stationname, time=time, destination=destinationstation, operator=operatorname,departuretime=departuretime, platform=platformnumber, liveoperatorname=liveoperatorname, livedeparturetime=livedeparturetime, liveplatformnumber=liveplatformnumber, livedestination=livedestination, callingat=destination)
这是我到目前为止得到的Jinja2/HTML代码。希望你能看到我在努力做什么,以及为什么我会陷入困境
{% for a in platform %}
<li>Platform {{a}} For The {{departuretime}} {{operator}} Service To {{destination}}</li>
{% endfor %}
我想要的是每列火车都有一条线,看起来像:
14:25西南铁路到伦敦滑铁卢的12号站台
但是它显示为这样,因为我不知道如何从其他列表中获取数据(下一行是针对列表中的站台数量打印的,这与列车数量相同,因为每列列车都有一个站台)
前往伦敦滑铁卢的['12:22'、'12:59'、'13:05'、'13:22'、'13:59'、'14:05']['西南铁路'、'西南铁路'、'西南铁路'、'西南铁路'、'西南铁路']服务的2号站台
您可以使用loop.index获取当前循环的索引。要小心,因为它从1开始,而不是从0开始。然后你必须做
my_list[loop.index-1]
您的Jinga2模板应该如下所示:
但更好的解决方案是使用不同的设计。您不需要创建2个、3个或4个列表。您只需创建一个表(列表列表)。这看起来像:
然后,在Jinja2模板中,您可以像这样访问您的表:
相关问题 更多 >
编程相关推荐