2016-08-20 91 views
0

這對於我們已經知道的固定變量來說足夠好。在Javascript腳本標籤內創建動態Django模板變量

<script type="text/javascript"> 
    var a = "{{someDjangoVariable}}"; 
</script> 

我有一個場景,我想要動態創建變量。 e.g -

<script type="text/javascript"> 
for (i = 1, bar = bar , textb = ""; i <= bar ; i++) 
    { 
    for (j = 1, category = category , textc = ""; j <= category ; j++) 
    { 
     var a = "{{someDjangoVariable + i + j}}"; 
     // Do some more stuff here in UI - create input field dynamically 
    } 
    } 
</script> 

在我的字典查詢可以說,我有這樣的結構(2×2矩陣結構) - {'someDjangoVariable11' : 1, 'someDjangoVariable12' : 23, 'someDjangoVariable21': 256, 'someDjangoVariable22': 31}

請建議,如果有動態地創建變量的方式。

P.S - 矩陣的行和列可能會根據用戶輸入而變化。它可以是2 *34 * 31 * 5

+0

這個問題似乎背叛了模板和JS如何工作的基本誤解,以及服務器端和前端代碼之間的區別。 –

+0

@DanielRoseman:我已經編輯了這個問題,讓我知道如果仍然無法理解。謝謝!! –

+0

我明白了這個問題;我所說的誤解是你的。 –

回答

0

這種做法是行不通的,因爲客戶端變量不能達到回服務器。我建議發送一個服務器變量字典。

服務器端:

data = {'foo': '1', 'bar': '2'} 
return render('template.html', data) 

客戶端:

<script> var data = {{data|json|safe}}; </script> 

然後你就可以用原來的字典鍵訪問它的JavaScript。

+1

或者,您可以使用服務器端的json.dumps()將數據轉換爲字符串,然後將該數據作爲字符串發送,從而不需要模板中的「json」過濾器。 –

+0

你能回答這個問題嗎?我在這篇文章中並不十分清楚。 http://stackoverflow.com/questions/39067756/creating-dynamic-django-template-variables-names-inside-javascript-script-tag –