如何在 Jinja for 循环中调用 Python 模块?

How can I call a Python module inside a Jinja for loop?

我在 Flask 中有这个功能,我在 spotify 上搜索:

@app.route('/search', methods=['GET','POST'])
def search():
    data = sp.search(request.form['code'])
    api_url = data['tracks']['href']
    items = data['tracks']['items']
    for item in items:
        artist = sp.artist(item['artists'][0]['uri'])
        image_url = artist['images'][2]['url']
    html = render_template('search.html',
                            artist_name=request.form['code'],
                            results=items,
                            api_url=api_url,
                            image_url=image_url)
    return html

这是我的 html 页面中的 Jinja 模板:

{% for artist in results %}
        <tr>
          <td>
            <img src="{{image_url}}" alt="{{image_url}}" class="bobby img-thumbnail img-circle">
            <a href="{{ url_for('artist', id=artist.id) }}">
              {{ artist.name }}
            </a>
          </td>
          <td>
            {{ artist.artists.0.name }}
          </td>
        </tr>
      {% endfor %}

我正确地收到了艺术家和歌曲。但是我在尝试为每个艺术家接收图片的部分遇到了问题:

for item in items:
  artist = sp.artist(item['artists'][0]['uri'])
  image_url = artist['images'][2]['url']

我得到了所有艺术家的相同照片。带有 spotipy 模块的 for 循环应该在 Jinja 模板中吗?我该怎么做?

先更新搜索功能:

@app.route('/search', methods=['GET','POST'])
def search():
    data = sp.search(request.form['code'])
    api_url = data['tracks']['href']
    items = data['tracks']['items']
    for item in items:
        artist = sp.artist(item['artists'][0]['uri'])
        item['image_url'] = artist['images'][2]['url'] # <-- change this line
    html = render_template('search.html',
                            artist_name=request.form['code'],
                            results=items,
                            api_url=api_url,
                            image_url=image_url)
    return html

那么您需要更新您的模板

<img src="{{artist.image_url}}" alt="{{artist.image_url}}" class="bobby img-thumbnail img-circle">