2012-12-29 41 views
0

我有一個字符串需要傳遞到Django模板過濾器。但僅僅是字符串,沒有涉及到django模型,我認爲這是導致問題的原因。如何將原始字符串或整數傳遞到Django模板過濾器?

var pk = "123"; 
var age = "{{ pk|pk_into_age }}"; 

在我的Django模板過濾器代碼:

def pk_into_age(pk): 
    timestamp = Model.objects.get(pk=int(pk)).timestamp 
    return humanizeTimeDiff(timestamp) // Ex: "5 hours ago" 
return timestamp 

但是這是行不通的,錯誤的是,「PK」值只是一個空字符串「」,這是沒有的情況下,它不會從上面獲取pk字符串字面值。

感謝來回幫助

+0

你能告訴你如何在模板中調用過濾器嗎? –

+0

哎呀,我上面寫了一個錯字,現在編輯 –

回答

1

要調用以錯誤的方式模板過濾器。請參閱以下內容: 您無法將JavaScript變量傳遞到模板過濾器中,從上下文傳遞變量。

<script> 
    var age = "{{ pk|pk_into_age }}"; 
</script> 

假設pk變量存在於上下文中。或者將pk值硬編碼爲:

var age = "{{ '123'|pk_into_age }}"; 
+0

感謝您的回覆,我如何傳遞js變量呢?我無法對其進行硬編碼,因爲它在許多模型中都是動態的。 –

+0

pk值從哪裏來?如果你是由你自己定義它,那麼你可以直接在過濾器中使用它看到更新的答案 –

+0

下面是我如何定義它:var pk = news [index] .pk; News是一個BIG json對象,index是json中該模型的索引,pk是pk字段。 –

0

您不能在模板過濾器中使用javascript變量,因爲在客戶端運行javascript,而在服務器端生成模板。

據我所知,沒有辦法,繞過這個問題,沒有再次與服務器通信。

因此,要將JavaScript變量傳遞給模板過濾器,例如,可以使用ajax請求。編寫額外的視圖,給出pk的過程,並返回一個普通的模板,不帶html頭部,只需要你需要的數據。

或...如果您不需要與用戶溝通以獲取「新聞」對象,只需在視圖中檢索news.age即可。

相關問題