2016-09-01 50 views
1

我有蟒蛇以下字典,我發送到模板:無法使用從Django中發送到模板字典

mydict = { 
    "ABC": { 
     "target_weight": 1, 
     "target_ra_weight": 2 
    }, 
    "XYZ": { 
     "target_weight": 3, 
     "target_ra_weight": 4 
    }, 
    "JKL": { 
     "target_weight": 5, 
     "target_ra_weight": 6 
    } 
} 
return render(request, 'template.html', {'mydict': mydict}) 

我似乎無法在這個分配給一個JavaScript變量和訪問內容。我已經嘗試了所有下面的我的模板的JavaScript部分:

var mydict = {{ mydict }}; 
> Uncaught SyntaxError: unexpected token { 

var mydict = {{ mydict|safe }}; 
> Uncaught SyntaxError: unexpected token { 

var mydict = {{ mydict|escapejs }}; 
> Uncaught SyntaxError: unexpected token { 

下面讓我來創建變量,但是當我試圖訪問它(如:執行console.log(mydict)),然後我錯了:

var mydict = JSON.parse('{{ mydict }}'); 
console.log(mydict); 
> Uncaught SyntaxError: unexpected token { in JSON at position 1 
// same thing happens when using |safe or |escapejs 
+1

怎麼了序列化到JSON它傳遞給模板或使用'__str __()之前'方法使用'JSON.parse'之後在JavaScript? – tbenett

+0

生成的html是怎麼樣的? – skoll

回答

2

你需要JSON,而不是字典。使用json.dumps功能:

import json 

mydict = { 
    "ABC": { 
     "target_weight": 1, 
     "target_ra_weight": 2 
    }, 
    "XYZ": { 
     "target_weight": 3, 
     "target_ra_weight": 4 
    }, 
    "JKL": { 
     "target_weight": 5, 
     "target_ra_weight": 6 
    } 
} 
return render(request, 'template.html', {'mydict': json.dumps(mydict)}) 

和模板:

var mydict = JSON.parse('{{ mydict|safe }}'); 
+0

沒有運氣。我得到完全相同的錯誤。我嘗試所有相同的變化,根據我原來的問題,但首先使用json.dumps,如你所建議的。同樣的錯誤。 – darkpool

+1

@darkpool您需要使用'JSON.parse('{{mydict | safe}}')'在您的模板中將其解析爲JSON。 – xyres