2

是否有訪問Django的模板代碼JavaScript變量的方式,如下圖所示:如何通過JavaScript變量Django的自定義過濾器

var tags_v1 = '{{ form.tags_1.value }}'; 
tags_v1 = tags_v1.split('{{ form.value_delim }}'); 
tags_v1 = tags_v1.map(function (item) { return '{{ $(item)|get_tag }}'; }) ; 

我想通過「項目」的值作爲變量的自定義過濾器「get_tag」。

回答

21

還有就是你似乎缺少Django的模板代碼JavaScript之間的和在瀏覽器中一個重要的區別:

Django模板是建立在服務器端,而JavaScript的客戶端上執行。

這意味着模板代碼總是在JavaScript之前執行(因爲它在頁面發送到客戶端之前由服務器執行)。因此,以您想要的方式混合使用JavaScript和Django代碼是不可能的。

例如,你似乎認爲JavaScript循環中的Django代碼會執行多次。當然,這不是事實。 Django代碼在服務器端執行一次,而不考慮稍後在瀏覽器中執行的JavaScript(即,在不同的機器上!)。對於Django,你的JavaScript代碼只是一個沒有意義的文本。

所以,答案是:如果你想分割一個字符串並對每個項目應用一個Django過濾器,你需要在Django服務器端分割字符串。你不能用JavaScript分割它,然後在Django中處理結果列表,因爲Django運行得更早,而且運行在不同的計算機上。

+0

你是對的!我怎麼能錯過這個:( – comiventor

+0

除非你使用AJAX ... – J0ANMM

+2

你是什麼意思@ J0ANMM?這篇文章的每一個世界仍然有效,即使你使用AJAX。 –