2013-06-21 46 views
0

我想達成的目標是使在Django模板計算,在純數學這將是:Django的模板:使用過濾結果作爲參數傳遞給第二濾波器

section_angle = base_angle + (sections_length/current_iteration_counter_over_sections) 

當試圖它在Django模板翻譯,我認爲這可能是這樣的:

{% for section in sections %} 
    {% with base_angle|add:sections|length|divides:forloop.counter0 as section_angle %} 

通過自定義過濾器看起來像

def divides(value, param): 
    return float(param)/float(value) 

我有點困惑怎麼安排呢,過濾器和參數,我們應該使用命令。隨着例子說明了這裏,它會導致一個錯誤:抓到ValueError異常而渲染:無法將字符串轉換爲float:

獎金的問題:我試圖添加括號澄清,但模板引擎似乎不喜歡它。

+0

不應'部分| length'是'sections_length'? – J0HN

+0

雖然您可能可以實現此目的,但爲了保持可讀性,我只需創建一個模板標籤即可實現此目的。 – karthikr

+0

爲什麼不只是做一個模板標籤來做整個計算? –

回答

0

不要那樣做。 Django模板系統不是放置這種邏輯的地方。 閱讀Philosophy comments關於Django的官方網站模板:

如果你有編程背景,或者,如果你已經習慣了 語言其中混合編程代碼直接轉換成HTML,你會想 承擔記住Django模板系統並不僅僅是嵌入到HTML中的Python 。這是通過設計:模板系統旨在 表示呈現,而不是程序邏輯。

我認爲蒂米的評論是正確的,把整個邏輯放在一個自定義過濾器中。

相關問題