chartjs数据没有传递到django网页

pb3s4cty  于 2022-11-06  发布在  Chart.js
关注(0)|答案(2)|浏览(245)

我尝试建立一个带有图表的网页。对于图表,我使用Chartjs。硬编码数据对于Chartjs图表来说没有问题。但是如果我尝试传递动态数据,图表就不会呈现。
标签和结果输出为46( Dataframe 为46行,1列)

视图.py

  1. def results(request):
  2. return render(request, 'results.html')
  3. def result(request):
  4. if request.method == 'POST':
  5. form = UploadFileForm(request.POST, request.FILES)
  6. if form.is_valid():
  7. data = request.FILES['file']
  8. # handle_uploaded_file(data)
  9. data = pd.read_csv(data,header=0, sep=',')
  10. df = data.values
  11. df2 = pd.DataFrame(df.reshape(-1,len(data.columns)))
  12. x = getPredictions(df2)
  13. x = np.array(x)
  14. result = x.reshape(-1,1).round()
  15. df = pd.DataFrame(data=result, columns=['output'])
  16. labels = len(df)
  17. # result = list(result)
  18. return render(request, 'results.html', {'result': result, 'labels': labels})
  19. else:
  20. form = UploadFileForm()
  21. return render(request, 'index.html', {'form': form})

html页面

  1. {% extends "base.html" %}
  2. {% block content %}
  3. <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
  4. <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js"></script>
  5. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/0.2.0/Chart.min.js" type="text/javascript"></script>
  6. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
  7. <div class="content">
  8. <div class="row">
  9. <div class="col-sm-8">
  10. <div class="card card-tasks">
  11. <h4>Chart.</h4>
  12. <canvas id="line-chart" width="500" height="350"></canvas>
  13. <script>
  14. new Chart(document.getElementById("line-chart"), {
  15. type: 'line',
  16. data: {
  17. labels: {labels|safe},
  18. datasets: [{
  19. data: {result|safe},
  20. label: "output chart",
  21. borderColor: "#3e95cd",
  22. fill: false
  23. }
  24. ]
  25. },
  26. options: {
  27. title: {
  28. display: true,
  29. text: 'output chart'
  30. }
  31. }
  32. });
  33. </script>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. {% endblock content %}
omjgkv6w

omjgkv6w1#

谢谢阿米尔帮我做手术。
1.我不得不从chartjs更新脚本。这才使它工作
1.我不得不在数据和标签周围放置"{}"

iyr7buue

iyr7buue2#

要在模板中显示变量,必须将它们括在两个大括号中:{{ }},您只使用了一个。
修改图表代码,如下所示:

  1. {% extends "base.html" %}
  2. {% block content %}
  3. <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
  4. <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js"></script>
  5. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/0.2.0/Chart.min.js" type="text/javascript"></script>
  6. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
  7. <div class="content">
  8. <div class="row">
  9. <div class="col-sm-8">
  10. <div class="card card-tasks">
  11. <h4>Chart.</h4>
  12. <canvas id="line-chart" width="500" height="350"></canvas>
  13. <script>
  14. new Chart(document.getElementById("line-chart"), {
  15. type: 'line',
  16. data: {
  17. labels: {{ labels |safe }},
  18. datasets: [{
  19. data: {{ result|safe }},
  20. label: "output chart",
  21. borderColor: "#3e95cd",
  22. fill: false
  23. }
  24. ]
  25. },
  26. options: {
  27. title: {
  28. display: true,
  29. text: 'output chart'
  30. }
  31. }
  32. });
  33. </script>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. {% endblock content %}
展开查看全部

相关问题