2011-04-08 34 views
2

我希望能夠基於模板中的「for」函數中的對象提取python中的一些數據。如何在django模板中的「for」函數中使用python?

在下面我的例子中想做點什麼例如模板系統之外,所以我不會模板語言的限制,而是可以使用Python:

#django_template.html 

{% for example in queryset %} 
    #do something to example with python 
{% endfor %} 

我知道那可能可以用模板標籤,但想知道是否沒有簡單的方法。這可能嗎?

編輯:我能夠做到這一點的看法:

for example in queryset: 
    #Extract data based on example 

但問題是我不能使用「{%例如查詢集%}」中的模板,然後獲取數據我在視圖中爲每個特定的示例進行了說明。

+0

模板標籤是一個很好且非常有效的方法。如果你想要一個複雜的標籤,你可以使用一些helper如templatetag-sugar。任何一個選項都是添加一個方法到'example'對象本身,所以它可以從模板中調用 – Jerzyk 2011-04-08 15:12:37

+0

是的,也許我應該去模板標籤的方式:)這也許是唯一的方法.. – tmpethick 2011-04-08 19:12:08

+0

你可以給一個更具體的你想要實現什麼的簡單例子? – 2011-04-08 20:09:27

回答

2

這不是Django的工作方式。如果你想在模板語言的「外部」做某些事情,你可以在你的視圖函數中做。

模板語言僅限於演示文稿。

沒有處理。

(你可以矇混過關的規則有點用的屬性和描述,但沒有。它破壞性能和混淆我們的休息。你只在您的視圖功能的處理,謝謝。)

+0

我知道我應該這樣做。問題是我不知道如何在視圖中一次一個queryset的每個部分,然後在模板中遍歷它們。 – tmpethick 2011-04-08 15:23:43

+0

@tmpethick:「我不知道如何在視圖中一次一個查詢集的每個部分,然後在模板中遍歷它們。」首先,這是微不足道的。這就是發電機的功能。更重要的是,如果這是您的**真實**問題,那麼請將其作爲單獨的問題提出。提供你所關心的細節。 – 2011-04-08 15:58:25

0

如果'例如'是你控制的類的一個實例,那麼你可以在模板中調用任意的類方法,這樣如果你想要使用特殊的漂亮打印方法,你可以通過插入{{example.myfunction}}來調用該方法。

除此之外,你不能在模板本身內寫入任何python代碼,所以你寫的問題的答案寫爲no。但是,您正確地聲明可以使用自定義標記對模板語言實施Python擴展。

你對'計算數據'的使用有點可怕 - 你絕對不應該做任何遠程重量級的事情,比如模板中的數學或者I/O。在你的觀點中保留這些計算:這種分離是按設計進行的。

+0

我沒有想到我可以在模板中編寫python。 問題是,即使在視圖中使用「for」很容易,然後對每個實例執行一些操作,也很難在模板中使用「for」,並顯示您獲得的不同類型的數據視圖。不知道你是否理解 - 這有點難以解釋:) – tmpethick 2011-04-08 15:42:14

相關問題