我的代码在视图中:
tracks = client.get('/tracks', order='hotness', limit=4)
artwork_url=[]
for track in tracks:
artwork_url.append(str(track.artwork_url).replace("large", "t300x300"))
val={"tracks":tracks,"artwork_url":artwork_url}
return render_to_response('music/tracks.html',val)
in .html
{% for track in tracks %}
<li>
<div class="genre-image">
<img src="{{ artwork_url[forloop.counter] }}">
</div>
{% endfor %}
错误:
Exception Type: TemplateSyntaxError
Exception Value: Could not parse the remainder: '[forloop.counter]' from 'artwork_url[forloop.counter]'
答案 0 :(得分:4)
由于您的artwork_url
是一个列表,因此合理的方法是按以下方式访问它:
artwork_url.forloop.counter
但它不起作用。不幸的是,Django模板语言不是 高级。
您应该像这样访问它。
{% for track in tracks %}
<li><div class="genre-image">
<img src="{{ track.artwork_url }}">
</div>
{% endfor %}
但这要求曲目是可变的,需要你在后端更改它。
因此,如果您无法修改曲目,则必须实现类似此类的自定义模板过滤器
{{ track.artwork_url|myFormatter:'t300' }}
一个非常小而简单的格式化程序:
@register.filter(name='myDate')
def myFormatter(value, arg):
if arg == 't300':
arg = 't300x300'
return str(value).replace("large", arg)