如何在 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">
我在 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">