欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django+echart繪制曲線圖的方法示例

 更新時(shí)間:2018年11月26日 08:28:22   作者:bitko  
這篇文章主要介紹了django+echart繪制曲線圖的方法示例,可以了解Django中aggregate和annotate函數(shù)的使用方法及其Django+Echarts繪制柱狀圖的完整示例,感興趣的小伙伴們可以參考一下

聲明:請(qǐng)事先到官網(wǎng)下載echarts,另外本文引用了adminlte模板構(gòu)建前臺(tái)頁(yè)面

views:

<!-- /.row -->
    <div class="row">
    <div class="col-xs-12">
     <!-- interactive chart -->
     <div class="box box-primary">
      <div class="box-header with-border">
       <i class="fa fa-bar-chart-o"></i>
 
       <h3 class="box-title">網(wǎng)絡(luò)趨勢(shì)</h3>
         <div class="box-tools pull-right">
        <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i>
        </button>
        <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
       </div>
      </div>
      <div class="box-body">
       <div class="row">
         <div class="col-md-9">
           </div>
      <div class="col-md-3">
      <form action="" method="post" id="net_range">
        <div class="box-tools">
       <div class="form-group" >
        <select onchange="submitForm_net();" class="form-control select2" style="width: 100%;" name="select_net">
        <span class="glyphicon glyphicon-search form-control-feedback"></span>
         <option selected="selected">{{ net_range_default }}</option>
         <option>0.5小時(shí)</option>
          <option>1小時(shí)</option>
         <option>1天 </option>
         <option>7天 </option>
         <option>30天 </option>
        </select>
       </div>
       <!-- /.form-group -->
      </div>
      <!-- /.col -->
      </form>
     </div>
     <!-- /.row -->
    </div>
       <div class="net" id="net-grow-chart" style="height: 300px;"></div>
      </div>
      <!-- /.box-body-->
     </div>
     <!-- /.box -->
 
    </div>
    <!-- /.col -->
   </div>
   <!-- /.row -->

選擇框 :

 //表單提交
function submitForm_net(){
  var form_net = document.getElementById("net_range");
  form_net.submit();
}
ECAHRTS:

 // #################### 【網(wǎng)絡(luò)流量趨勢(shì)】圖形 ####################
 var myChart_net_grow = echarts.init(document.getElementById('net-grow-chart'));
 option_net_grow = {
   title: {
     text: '網(wǎng)絡(luò)流量',
     subtext: ''
   },
   tooltip: {
     trigger: 'axis',
     axisPointer: {
       type: 'cross'
     }
   },
     legend: {
    data:['接收流量(kbps)','發(fā)送流量(kbps)']
  },
   toolbox: {
     show: true,
     feature: {
       saveAsImage: {}
     }
   },
   xAxis: {
     type: 'category',
     boundaryGap: false,
     zlevel: 1,
     data: [{% for i in netgrow_list %}'{{ i.chk_time | date:"m-d H:i:s" }}',{% endfor %}]
   },
   yAxis: {
     type: 'value',
     axisLabel: {
       formatter: '{value}'
     },
     axisPointer: {
       snap: true
     },
     max:100,
     min:0
   },
   series: [
     {
       name:'接收流量(kbps)',
       type:'line',
       smooth: true,
       data: [{% for i in netgrow_list %}{{ i.recv_kbps }},{% endfor %}]
     },
        {
       name:'發(fā)送流量(kbps)',
       type:'line',
       smooth: true,
       data: [{% for i in netgrow_list %}{{ i.send_kbps }},{% endfor %}]
     }
   ]
 };
 myChart_net_grow.showLoading(); //顯示loading
 setInterval(function () {
   myChart_net_grow.hideLoading(); //顯示完成后不顯示loading
   myChart_net_grow.setOption(option_net_grow, true);
 },500);

VIEWS:

@login_required(login_url='/login')
def linux_monitor(request):
  messageinfo_list = models.TabAlarmInfo.objects.all()
  tagsdefault = request.GET.get('tagsdefault')
  if not tagsdefault:
    tagsdefault = models.TabLinuxServers.objects.order_by('tags')[0].tags
  cpu_range_defualt =  request.GET.get('cpu_range_default')
  if not cpu_range_defualt:
    cpu_range_defualt = '1小時(shí)'.decode("utf-8")
  mem_range_default = request.GET.get('mem_range_default')
  if not mem_range_default:
    mem_range_default = '1小時(shí)'.decode("utf-8")
  net_range_default = request.GET.get('net_range_default')
  if not net_range_default:
    net_range_default = '1小時(shí)'.decode("utf-8")
  hostinfo = models.TabLinuxServers.objects.all().order_by('tags')
 
  net_begin_time = tools.range(net_range_default)
  cpu_begin_time = tools.range(cpu_range_defualt)
  mem_begin_time = tools.range(mem_range_default)
  end_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
 
  netgrow = models.OsInfoHis.objects.filter(tags=tagsdefault, recv_kbps__isnull=False).filter(
    chk_time__gt=net_begin_time, chk_time__lt=end_time).order_by('-chk_time')
  netgrow_list = list(netgrow)
  netgrow_list.reverse()
 
  cpugrow = models.OsInfoHis.objects.filter(tags=tagsdefault, cpu_used__isnull=False).filter(
    chk_time__gt=cpu_begin_time, chk_time__lt=end_time).order_by('-chk_time')
  cpugrow_list = list(cpugrow)
  cpugrow_list.reverse()
 
  memgrow = models.OsInfoHis.objects.filter(tags=tagsdefault, mem_used__isnull=False).filter(
    chk_time__gt=mem_begin_time, chk_time__lt=end_time).order_by('-chk_time')
  memgrow_list = list(memgrow)
  memgrow_list.reverse()
 
  diskinfos = models.OsFilesystem.objects.filter(tags=tagsdefault)
 
  try:
    osinfo = models.OsInfo.objects.get(tags=tagsdefault)
  except models.OsInfo.DoesNotExist:
    osinfo = models.OsInfoHis.objects.filter(tags=tagsdefault,cpu_used__isnull=False).order_by('-chk_time')[0]
 
  if request.method == 'POST':
    if request.POST.has_key('select_tags') or request.POST.has_key('select_cpu')or request.POST.has_key('select_mem') or request.POST.has_key('select_net'):
      if request.POST.has_key('select_tags'):
        tagsdefault = request.POST.get('select_tags', None).encode("utf-8")
      elif request.POST.has_key('select_net'):
        net_range_defualt = request.POST.get('select_net',None)
      elif request.POST.has_key('select_cpu'):
        cpu_range_defualt = request.POST.get('select_cpu',None)
      elif request.POST.has_key('select_mem'):
        mem_range_default = request.POST.get('select_mem', None)
      return HttpResponseRedirect('/linux_monitor?tagsdefault=%s&net_range_default=%s&cpu_range_default=%s&mem_range_default=%s' %(tagsdefault,net_range_default,cpu_range_defualt,mem_range_default))
 
    else:
      logout(request)
      return HttpResponseRedirect('/login/')
 
  if messageinfo_list:
    msg_num = len(messageinfo_list)
    msg_last = models.TabAlarmInfo.objects.latest('id')
    msg_last_content = msg_last.alarm_content
    tim_last = (datetime.datetime.now() - msg_last.alarm_time).seconds / 60
    return render_to_response('linux_monitor.html', {'netgrow_list':netgrow_list,'cpugrow_list':cpugrow_list,'memgrow_list':memgrow_list, 'tagsdefault':tagsdefault, 'hostinfo':hostinfo, 'osinfo': osinfo,'net_range_default':net_range_default,'cpu_range_default':cpu_range_defualt,'mem_range_default':mem_range_default, 'messageinfo_list': messageinfo_list,
                          'msg_num': msg_num,'msg_last_content': msg_last_content, 'tim_last': tim_last,'diskinfos':diskinfos})
  else:
    return render_to_response('linux_monitor.html', {'netgrow_list':netgrow_list,'cpugrow_list':cpugrow_list,'memgrow_list':memgrow_list, 'tagsdefault':tagsdefault, 'hostinfo':hostinfo, 'osinfo': osinfo,'net_range_default':net_range_default,'cpu_range_default':cpu_range_defualt,'mem_range_default':mem_range_default,'diskinfos':diskinfos})

效果圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 教你使用python搭建一個(gè)QQ機(jī)器人實(shí)現(xiàn)叫起床服務(wù)

    教你使用python搭建一個(gè)QQ機(jī)器人實(shí)現(xiàn)叫起床服務(wù)

    這篇文章主要介紹了教你使用python搭建一個(gè)QQ機(jī)器人實(shí)現(xiàn)叫起床服務(wù),作為一個(gè)程序猿如果沒(méi)有女朋友叫你起床,那么就自己制作一個(gè),如果有那么也可以幫你叫女朋友起床
    2021-08-08
  • python操作MongoDB基礎(chǔ)知識(shí)

    python操作MongoDB基礎(chǔ)知識(shí)

    MongoDB支持好多語(yǔ)言,今天我們就寫一寫python操作MongoDB的知識(shí),從安裝MongoDB到操作MongoDB全都有了。
    2013-11-11
  • python填充彩色圖形的實(shí)現(xiàn)示例

    python填充彩色圖形的實(shí)現(xiàn)示例

    本文主要介紹了python填充彩色圖形的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python中的作用域規(guī)則詳解

    Python中的作用域規(guī)則詳解

    這篇文章主要介紹了Python中的作用域規(guī)則詳解了局部作用域、全局作用域、內(nèi)置作用域、嵌套作用域等內(nèi)容,本文講解了,需要的朋友可以參考下
    2015-01-01
  • Python中Selenium模塊的使用詳解

    Python中Selenium模塊的使用詳解

    這篇文章主要介紹了Python中Selenium模塊的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Pytorch中torch.repeat_interleave()函數(shù)使用及說(shuō)明

    Pytorch中torch.repeat_interleave()函數(shù)使用及說(shuō)明

    這篇文章主要介紹了Pytorch中torch.repeat_interleave()函數(shù)使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 淺析Python 抽象工廠模式的優(yōu)缺點(diǎn)

    淺析Python 抽象工廠模式的優(yōu)缺點(diǎn)

    這篇文章主要介紹了Python 抽象工廠模式的優(yōu)缺點(diǎn),文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • python中assert用法實(shí)例分析

    python中assert用法實(shí)例分析

    這篇文章主要介紹了python中assert用法,實(shí)例分析了assert的功能及相關(guān)使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊(duì)列解決小貓釣魚問(wèn)題

    Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊(duì)列解決小貓釣魚問(wèn)題

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊(duì)列解決小貓釣魚問(wèn)題,結(jié)合實(shí)例形式分析了Python使用隊(duì)列實(shí)現(xiàn)小貓釣魚游戲的算法操作技巧,代碼中備有較為詳盡的注釋便于讀者理解,需要的朋友可以參考下
    2017-12-12
  • python3.x+pyqt5實(shí)現(xiàn)主窗口狀態(tài)欄里(嵌入)顯示進(jìn)度條功能

    python3.x+pyqt5實(shí)現(xiàn)主窗口狀態(tài)欄里(嵌入)顯示進(jìn)度條功能

    這篇文章主要介紹了python3.x+pyqt5實(shí)現(xiàn)主窗口狀態(tài)欄里(嵌入)顯示進(jìn)度條功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論