2016-05-28 14 views
1

友達、私はチャートを作成するためにjavascriptにテンプレート変数を渡そうとしています。しかし、私はそれを取得していません。 Djangoはすべてのjsファイルを静的ファイルとみなします。動的テンプレート変数はjavascriptでは使用できません。テンプレート変数をjavascriptに渡す方法

私もこれを試してみました:

passing template variables to javascript

しかし、それはどちらか助けていません。変数は1つだけ渡すことができます。残りはしませんでした。

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のセクションでは、次のとおりです。

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

先に説明したように、問題は1つの変数だけが渡され、残りの変数は渡されません。その結果、チャートはレンダリングされません。私は友達と何をすべきですか?

私が助けてくれたら、私はDjango 1.9とハイチャートを使用しています。

+0

あなたはUserクエリーに '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)] 
     ] 
}] 

数値に文字列を変更するには、チャートが描画されました!

関連する問題