0

ビュー内の私のコード:

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)

.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]'
4

1 に答える 1

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)
于 2013-06-23T06:38:33.170 に答える