2016-05-28 27 views
1

朋友們,我想將模板變量傳遞給javascript以創建圖表。但我沒有得到它。 Django將所有js文件視爲靜態文件。所以動態模板變量不適用於JavaScript。如何將模板變量傳遞給javascript

我甚至試過這樣:

passing template variables to javascript

但它並沒有幫助。只有一個變量可以傳遞。其餘的都沒有。

def profile(request,username): 
    try: 
     u = User.objects.get(username=username) 
     questions = Question.objects.filter(user=u) 
     answers = Answer.objects.filter(user=u) 
     docs = Document.objects.filter(user=u) 
    except User.DoesNotExist: 
     pass 
    return render(request,"auths/profile.html",locals()) 

此外,如在上面的鏈接所描述的,我的profile.html是

<input type="hidden" value="{{ u.username }}" id="username" /> 
<input type="hidden" value="{{ docs.count }}" id="docs" /> 
<input type="hidden" value="{{ questions.count }}" id="questions" /> 
<input type="hidden" value="{{ answers.count }}" id="answers" /> 


{% block extra %} 
    <script type="text/javascript"> 
     var user = document.getElementById("username").value; 
     var docs = document.getElementById("docs").value; 
     var questions = document.getElementById("questions").value; 
     var answers = document.getElementById("answers").value; 
    </script> 

    <script type="text/javascript" src="{% static 'highcharts.js'%}">  </script> 
    <script type="text/javascript" src="{% static 'highcharts-3d.js'%}"></script> 

    <script type="text/javascript" src="{% static 'chart.js' %}"></script> 


{% endblock %} 

而我chart.js之其中I傳遞數據的一個部分是:

series: [{ 
    type: 'column', 
    name: 'User Profile', 
    data: [ 
     ['Questions', questions], 
     ['Answers', answers], 
     ['Documents', docs] 
    ] 
}] 

正如前面所解釋的那樣,問題是隻有一個變量通過,而其他變量不通過。因此,不會呈現圖表。我該怎麼做朋友?

如果有幫助,我使用Django 1.9和highcharts。

+0

因爲您已經爲用戶查詢使用了get,但是其他的則使用了filter。 'filter'返回一個查詢集,而不是一個模型實例。 –

+0

我不明白。事情是我想顯示一個特定用戶的文件數量,答案和問題。我不應該使用get來找到用戶並過濾以提取該特定用戶的問題,答案等嗎? – amankarn

回答

2

爲了回答我自己的問題,我想我找出了什麼是錯的。圖表值是數字格式。但我把它作爲字符串傳遞。因此,所有需要做的就是使用JavaScript類型轉換將這些字符串轉換爲值或數字。

而且我chart.js之,我傳遞數據的部分是:

series: [{ 
    type: 'column', 
    name: 'User Profile', 
    data: [ 
     ['Questions', Number(questions)], 
     ['Answers', Number(answers)], 
     ['Documents', Number(docs)] 
     ] 
}] 

改變字符串成數字,圖表被渲染!

相關問題