当前位置:   article > 正文

django之 echarts数据可视化2:导入数据库数据_django数据库中的数据连接到echarts中

django数据库中的数据连接到echarts中

前面我们已经在django框架项目里实现了简单的echarts数据可视化。本篇是在

django之 echarts数据可视化_水w的博客-CSDN博客的基础上进行的。

而且注意:本篇与上一篇使用的不是同一个echarts示例。

在前面的基础上,现在我们想要修改echarts示例数据,改成我们自己数据库中的数据。

步骤:

1、先对echarts示例进行一个整体的了解,

 2、重新运行django项目,简单修改之后的页面为:

简单修改之后的show.html代码为: 

  1. {% load static %}
  2. <!--
  3. THIS EXAMPLE WAS DOWNLOADED FROM https://echarts.apache.org/examples/zh/editor.html?c=bar-gradient
  4. -->
  5. <!DOCTYPE html>
  6. <html style="height: 100%">
  7. <head>
  8. <meta charset="utf-8">
  9. </head>
  10. <body style="height: 100%; margin: 0">
  11. <div id="container" style="height: 100%"></div>
  12. <script type="text/javascript" src="{% static 'dist/js/echarts.js' %}"></script>
  13. <script type="text/javascript">
  14. var chartDom = document.getElementById('container');
  15. var myChart = echarts.init(chartDom);
  16. var option;
  17. option = {
  18. title: {
  19. text: 'Stacked Line'
  20. },
  21. tooltip: {
  22. trigger: 'axis'
  23. },
  24. legend: {
  25. data: ['北京', '天津', '上海', '广州', '深圳']
  26. },
  27. grid: {
  28. left: '2%',
  29. right: '30%',
  30. bottom: '14%',
  31. containLabel: true
  32. },
  33. toolbox: {
  34. feature: {
  35. saveAsImage: {}
  36. }
  37. },
  38. xAxis: {
  39. type: 'category',
  40. boundaryGap: false,
  41. data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  42. },
  43. yAxis: {
  44. type: 'value'
  45. },
  46. series: [
  47. {
  48. name: '北京',
  49. type: 'line',
  50. stack: 'Total',
  51. data: [120, 132, 101, 134, 90, 230, 210]
  52. },
  53. {
  54. name: '天津',
  55. type: 'line',
  56. stack: 'Total',
  57. data: [220, 182, 191, 234, 290, 330, 310]
  58. },
  59. {
  60. name: '上海',
  61. type: 'line',
  62. stack: 'Total',
  63. data: [150, 232, 201, 154, 190, 330, 410]
  64. },
  65. {
  66. name: '广州',
  67. type: 'line',
  68. stack: 'Total',
  69. data: [320, 332, 301, 334, 390, 330, 320]
  70. },
  71. {
  72. name: '深圳',
  73. type: 'line',
  74. stack: 'Total',
  75. data: [820, 932, 901, 934, 1290, 1330, 1320]
  76. }
  77. ]
  78. };
  79. option && myChart.setOption(option);
  80. </script>
  81. </body>
  82. </html>

3、对传入的数据进行修改,使用本地mysql数据库中的Job数据:

 在django项目的应用web里的web/views.py文件下修改函数“web_show”

  1. from datetime import datetime
  2. from django.http import HttpResponse
  3. from django.shortcuts import render, redirect
  4. from django.urls import reverse
  5. from myadmin.models import User, Company, Job
  6. from django.db.models import Q
  7. # Create your views here.
  8. def web_show(request):
  9. beijing_list = [
  10. Job.objects.filter(Q(job_name__contains='北京') | Q(job_salary__lt=8000)).count(),
  11. Job.objects.filter(Q(job_name__contains='北京') | Q(job_salary__gt=8000) | Q(job_salary__lte=10000)).count(),
  12. Job.objects.filter(Q(job_name__contains='北京') | Q(job_salary__gt=10000) | Q(job_salary__lte=12000)).count(),
  13. Job.objects.filter(Q(job_name__contains='北京') | Q(job_salary__gt=12000) | Q(job_salary__lte=14000)).count(),
  14. Job.objects.filter(Q(job_name__contains='北京') | Q(job_salary__gt=14000) | Q(job_salary__lte=16000)).count(),
  15. Job.objects.filter(Q(job_name__contains='北京') | Q(job_salary__gt=16000)).count(),
  16. ]
  17. shanghai_list = [1,2,3,4,5,6]
  18. shenzhen_list = [1,2,3,4,5,6]
  19. tianjin_list = [
  20. Job.objects.filter(Q(job_name__contains='天津') | Q(job_salary__lt=8000)).count(),
  21. Job.objects.filter(Q(job_name__contains='天津') | Q(job_salary__gt=8000) | Q(job_salary__lte=10000)).count(),
  22. Job.objects.filter(Q(job_name__contains='天津') | Q(job_salary__gt=10000) | Q(job_salary__lte=12000)).count(),
  23. Job.objects.filter(Q(job_name__contains='天津') | Q(job_salary__gt=12000) | Q(job_salary__lte=14000)).count(),
  24. Job.objects.filter(Q(job_name__contains='天津') | Q(job_salary__gt=14000) | Q(job_salary__lte=16000)).count(),
  25. Job.objects.filter(Q(job_name__contains='天津') | Q(job_salary__gt=16000)).count(),
  26. ]
  27. shanghai_list = [
  28. Job.objects.filter(Q(job_name__contains='上海') | Q(job_salary__lt=8000)).count(),
  29. Job.objects.filter(Q(job_name__contains='上海') | Q(job_salary__gt=8000) | Q(job_salary__lte=10000)).count(),
  30. Job.objects.filter(Q(job_name__contains='上海') | Q(job_salary__gt=10000) | Q(job_salary__lte=12000)).count(),
  31. Job.objects.filter(Q(job_name__contains='上海') | Q(job_salary__gt=12000) | Q(job_salary__lte=14000)).count(),
  32. Job.objects.filter(Q(job_name__contains='上海') | Q(job_salary__gt=14000) | Q(job_salary__lte=16000)).count(),
  33. Job.objects.filter(Q(job_name__contains='上海') | Q(job_salary__gt=16000)).count(),
  34. ]
  35. guangzhou_list = [
  36. Job.objects.filter(Q(job_name__contains='广州') | Q(job_salary__lt=8000)).count(),
  37. Job.objects.filter(Q(job_name__contains='广州') | Q(job_salary__gt=8000) | Q(job_salary__lte=10000)).count(),
  38. Job.objects.filter(Q(job_name__contains='广州') | Q(job_salary__gt=10000) | Q(job_salary__lte=12000)).count(),
  39. Job.objects.filter(Q(job_name__contains='广州') | Q(job_salary__gt=12000) | Q(job_salary__lte=14000)).count(),
  40. Job.objects.filter(Q(job_name__contains='广州') | Q(job_salary__gt=14000) | Q(job_salary__lte=16000)).count(),
  41. Job.objects.filter(Q(job_name__contains='广州') | Q(job_salary__gt=16000)).count(),
  42. ]
  43. shenzhen_list = [
  44. Job.objects.filter(Q(job_name__contains='深圳') | Q(job_salary__lt=8000)).count(),
  45. Job.objects.filter(Q(job_name__contains='深圳') | Q(job_salary__gt=8000) | Q(job_salary__lte=10000)).count(),
  46. Job.objects.filter(Q(job_name__contains='深圳') | Q(job_salary__gt=10000) | Q(job_salary__lte=12000)).count(),
  47. Job.objects.filter(Q(job_name__contains='深圳') | Q(job_salary__gt=12000) | Q(job_salary__lte=14000)).count(),
  48. Job.objects.filter(Q(job_name__contains='深圳') | Q(job_salary__gt=14000) | Q(job_salary__lte=16000)).count(),
  49. Job.objects.filter(Q(job_name__contains='深圳') | Q(job_salary__gt=16000)).count(),
  50. ]
  51. return render(request, "web/show.html",{'beijing_list':beijing_list, 'tianjin_list':tianjin_list,
  52. 'shanghai_list':shanghai_list, 'guangzhou_list':guangzhou_list, 'shenzhen_list':shenzhen_list})

这里使用model.object.filter()来对数据库中的数据进行过滤,

model.objects.get(name='name')

model.objects.filter(name='name')

# 等价于model.objects.filter(name__exact='name');

# name__iexact不区分大小写

model.objects.filter(name__contains="北京")

model.objects.all().exists()         # 判断是否为空

model.objects.all().count()         # 查询的对象数量

使用Q来进行多条件的查询:

_exact 精确等于 
__contains 包含
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于

  1. from django.db.models import Q
  2. # 查询Job表下的满足条件(job_area属性中包含“北京”,并且job_salary低于8000)的对象的数量
  3. Job.objects.filter(Q(job_name__contains='北京') | Q(job_salary__lt=8000))

4、修改web/views.py文件下修改函数“web_show”之后,我们还需要修改template/web/show.html文件,将后端的beijing_list、shanghai_list、guangzhou_list、shenzhen_list、tianjin_list传入到show.html文件中,才能显示出来我们导入的数据。

 

show.html代码为:

  1. {% load static %}
  2. <!DOCTYPE html>
  3. <html style="height: 100%">
  4. <head>
  5. <meta charset="utf-8">
  6. </head>
  7. <body style="height: 100%; margin: 0">
  8. <div id="container" style="height: 100%"></div>
  9. <script type="text/javascript" src="{% static 'dist/js/echarts.js' %}"></script>
  10. <script type="text/javascript">
  11. var chartDom = document.getElementById('container');
  12. var myChart = echarts.init(chartDom);
  13. var option;
  14. option = {
  15. title: {
  16. text: 'Stacked Line'
  17. },
  18. tooltip: {
  19. trigger: 'axis'
  20. },
  21. legend: {
  22. data: ['北京', '天津', '上海', '广州', '深圳']
  23. },
  24. grid: {
  25. left: '2%',
  26. right: '30%',
  27. bottom: '14%',
  28. containLabel: true
  29. },
  30. toolbox: {
  31. feature: {
  32. saveAsImage: {}
  33. }
  34. },
  35. xAxis: {
  36. type: 'category',
  37. boundaryGap: false,
  38. data: ['小于8000', '8000~10000', '10000~12000', '12000~14000', '14000~16000', '大于16000']
  39. },
  40. yAxis: {
  41. type: 'value'
  42. },
  43. series: [
  44. {
  45. name: '北京',
  46. type: 'line',
  47. stack: 'Total',
  48. data: {{ beijing_list }}
  49. },
  50. {
  51. name: '天津',
  52. type: 'line',
  53. stack: 'Total',
  54. data: {{ tianjin_list|safe }}
  55. },
  56. {
  57. name: '上海',
  58. type: 'line',
  59. stack: 'Total',
  60. data: {{ shanghai_list }}
  61. },
  62. {
  63. name: '广州',
  64. type: 'line',
  65. stack: 'Total',
  66. data: {{ guangzhou_list }}
  67. },
  68. {
  69. name: '深圳',
  70. type: 'line',
  71. stack: 'Total',
  72. data: {{ shenzhen_list }}
  73. }
  74. ]
  75. };
  76. option && myChart.setOption(option);
  77. </script>
  78. </body>
  79. </html>

5、重新运行django项目,在浏览器输入http://127.0.0.1:8000/web/show/

就可以看到echarts图了,

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/769425
推荐阅读
相关标签
  

闽ICP备14008679号