2013-06-23 118 views
0

我的視圖代碼:越來越模板語法錯誤在Django模板

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]' 
+0

軌道的元素是不可變的嗎?如果沒有,那麼只需附加追蹤變量而不是artwork_url。 – mariodev

回答

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)