При возврате значений массива в HTML продукт записывается 10 раз, а не один раз - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь вернуть 2 значения массива, название продукта и цену продукта, я сделал это в HTML:

<tbody>
      {% for name in farmingMerchantName %} {% for npcBuy in
      farmingMerchantPrices %}
      <tr>
        <td>{{ name }}</td>
        <td>temp</td>
        <td>{{ npcBuy }}</td>
        <td>temp</td>
      </tr>
      {% endfor%} {% endfor %}
    </tbody>

и я сделал это в python:

@app.route('/bresell')
def reSell():
    farmingMerchantPrices = [
        "5",  # cocoa beans
        "12",  # brown mushroom
        "2.328125",  # carrot
        "8",  # pumpkin
        "2.328125",  # wheat
        "12",  # red mushroom
        "2.328125",  # potato
        "4",  # sand
        "5",  # sugar cane
        "2",  # melon
    ]
    farmingMerchantName = [
        "Cocoa Beans",
        "Brown Mushroom",
        "Carrot",
        "Pumpkin",
        "Wheat",
        "Red Mushroom",
        "Potato",
        "Sand",
        "Sugar Cane",
        "Melon"
    ]

    return render_template('resell.html', farmingMerchantPrices=farmingMerchantPrices, farmingMerchantName=farmingMerchantName)

И вот результат: output

И так для всех продуктов в массиве "farmMerchantName".

Мне нужно напишите продукт с правильной ценой (name1 = price1, name2 = price2 и т. д.).

Спасибо

1 Ответ

0 голосов
/ 26 мая 2020

Для этого вам нужно использовать метод zip:

<tbody>
      {% for name, npcBuy in zip(farmingMerchantName, farmingMerchantPrices) %}
      <tr>
        <td>{{ name }}</td>
        <td>temp</td>
        <td>{{ npcBuy }}</td>
        <td>temp</td>
      </tr>
      {% endfor%} {% endfor %}
</tbody>

Проблема с вашим кодом в том, что он становится вложенным l oop, поскольку вы используете два для l oop последовательно.

Если вы получите какую-либо ошибку jinja относительно zip, вы можете сделать следующее:

app.jinja_env.globals.update(zip=zip)
...