2016-05-28 16 views
1

Freunde, ich versuche, die Vorlage Variable an Javascript übergeben, um ein Diagramm zu erstellen. Aber ich verstehe es nicht. Django betrachtet alle js-Dateien als statische Dateien. Daher sind dynamische Vorlagenvariablen für Javascripts nicht verfügbar.Wie Vorlage Variablen an Javascript übergeben

ich dies auch versucht:

passing template variables to javascript

Aber es hat auch nicht geholfen. Es konnte nur eine Variable übergeben werden. Der Rest nicht.

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()) 

Auch, wie in den obigen Link beschrieben, mein profile.html ist

<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 %} 

Und ein Teil meiner chart.js, wo ich die Daten übergeben ist:

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

Wie zuvor erklärt, wird das Problem nur eine Variable wird übergeben, während der Rest nicht. Daher wird kein Diagramm gerendert. Was soll ich Freunde machen?

Falls es hilft, benutze ich Django 1.9 und highcharts.

+0

Weil Sie 'get' für die Benutzerabfrage verwendet haben, aber' filter' für den Rest. 'filter' gibt ein Anfrage-Set zurück, keine Model-Instanz. –

+0

Ich verstehe es nicht. Ich möchte die Anzahl der Dokumente, Antworten und Fragen eines bestimmten Benutzers zeigen. Sollte ich nicht versuchen, den Benutzer zu finden und zu filtern, um die Fragen, Antworten usw. dieses bestimmten Benutzers zu extrahieren? – amankarn

Antwort

2

Um meine eigene Frage zu beantworten, habe ich herausgefunden, was falsch war. Die Diagrammwerte sind im Zahlenformat. Aber ich gab es als Schnur weiter. Alles, was getan werden musste, ist, diese Zeichenfolgen mithilfe von JavaScript-Typumwandlung in Werte oder Zahlen zu konvertieren.

Und ein Teil meiner chart.js, wo ich die Daten übergeben ist:

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

Ändern der Strings in Zahlen wurde die Grafik gerendert!

Verwandte Themen