Как я могу вызвать модуль Python внутри Jinja для l oop? - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть эта функция в 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

Это шаблон Jinja на моей html странице:

{% 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 %}

I правильно получить исполнителя и песню. Но у меня есть проблема с той частью, где я пытаюсь получить картину для каждого художника:

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

Я получаю одинаковую картину для всех художников. Должно ли это быть для l oop с модулем spotipy внутри шаблона Jinja? И как я могу это сделать?

1 Ответ

1 голос
/ 14 февраля 2020

Сначала обновите функцию поиска:

@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">
...