如何在Jinja for循环中调用Python模块?
我在Flask中有这个函数,我在其中搜索spotify:如何在Jinja for循环中调用Python模块?,python,flask,jinja2,spotify,spotipy,Python,Flask,Jinja2,Spotify,Spotipy,我在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.ar
@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 %}
我为所有的艺术家都画了同样的画。带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">
您是否尝试将img src艺术家['images'][2]['url']放入其中?看来你给每个艺术家都放了同样的图片,谢谢你的解决方案。我想弄明白为什么会这样?
<img src="{{artist.image_url}}" alt="{{artist.image_url}}" class="bobby img-thumbnail img-circle">