朋友们,我正在尝试将模板变量传递给javascript以创建图表。但我没有得到它。 Django将所有js文件视为静态文件。因此动态模板变量不适用于javascripts。
我甚至试过这个:
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的一部分是:
series: [{
type: 'column',
name: 'User Profile',
data: [
['Questions', questions],
['Answers', answers],
['Documents', docs]
]
}]
如前所述,问题是只有一个变量通过而其他变量没有通过。因此,不会呈现任何图表。我该怎么做朋友?
如果有帮助,我使用的是Django 1.9和highcharts。
答案 0 :(得分:2)
要回答我自己的问题,我想我弄清楚出了什么问题。图表值采用数字格式。但我把它作为字符串传递给我。所以需要做的就是使用javascript类型转换将这些字符串转换为值或数字。
我传递数据的chart.js的一部分是:
series: [{
type: 'column',
name: 'User Profile',
data: [
['Questions', Number(questions)],
['Answers', Number(answers)],
['Documents', Number(docs)]
]
}]
将字符串更改为数字,图表已呈现!