簡體   English   中英

如何使用Jinja 2在HTML中以一行顯示來自多個python列表中同一索引位置的值?

[英]How do i display values from the same index position from multiple python lists, on 1 line, in HTML using Jinja 2?

因此,對於一項任務,我負責構建一個程序,該程序根據用戶輸入的數據(他們要去的車站,他們要去的車站,日期和時間)顯示實時火車信息。 當收集此信息並將其解析為api后,我將獲取諸如平台號,出發時間,火車公司等數據,並將每個值放入其自己的列表中,並置於其自己的索引位置(例如,每個平台號將進入一個名為platformnumber的列表,其位置為['2','12','4'])。

一旦我將所有這些數據都存儲在列表中,由於我編程的方式,所有列表中index [0]處的所有數據都匹配在一起,與index [1]相同,依此類推。 我的問題是,我需要將此數據顯示在我的HTML頁面上,每列火車的OWN行上都顯示平台號,運營商名稱和出發時間。 下面是我到目前為止的代碼,以及我到目前為止的屏幕截圖。

通過遍歷平台列表,並為每個平台編寫一個新段落(總是有與火車相同的平台數量),我設法做到了這一點,這很好,因為我的行數合適。 但是,因為我的其余數據也在列表中,所以我不能一直在循環內添加循環以獲取數據。 多數民眾贊成在我的問題。

下面是我用來將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)

這是到目前為止我的Jinja 2 / 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 [[South Western Railway],'South西部鐵路”,“西南鐵路”,“西南鐵路”,“西南鐵路”,“西南鐵路”)服務倫敦滑鐵盧。

這樣做的方法是,可以使用loop.index獲取當前循環的索引。 請注意,因為它從1開始,而不是0 然后,您必須做my_list[loop.index-1]

您的Jinga2模板應如下所示:

{% for a in list_a %}
    <li>Platform {{a}} For The {{list_b[loop.index-1]}} and {{list_c[loop.index-1]}}</li>
{% endfor %}

但是更好的解決方案是使用其他設計。 您無需創建2、3或4個列表。 您可以只創建一個表(列表列表)。 看起來像:

information = [
    ["plaform A", "departure A", ...],
    ["plaform B", "departure B", ...],
]

然后在Jinja2模板中,您可以像這樣訪問表:

{% for platform, departure, ... in information %}
    <li>Platform {{platform}} For The {{departure}}</li>
{% endfor %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM