[django]django+post+ajax+highcharts使用方法

直接代码展示:

view.py文件代码

from django.http import JsonResponse #django ajax部分

def ajax_kchart(request):
    times = request.POST[‘shijian‘]
    chnl = request.POST[‘chnl‘]
    chnl_data = keywork_chart(chnl,times)
    data_list = []
    for j in chnl_data:
        data_list.append(j)
    return JsonResponse(data_list,safe=False)

这里重点关注两点 ajax_kchart函数名 和 JsonResponse(data_list,safe=False)返回json的函数

ajax_kchart函数名需要出现在url配置中,Django 1.7 及以后的版本才可以用到JsonResponse,若返回参数是列表,要令safe=False

url.py代码:

url(r‘^workchart/$‘, ‘keywork.views.ajax_kchart‘, name=‘ajax_kchart‘),

模板代码:

{% load staticfiles %}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <script src="{% static ‘js/jquery/jquery.min.js‘ %}"></script>
    <script src="{% static ‘js/Highcharts/js/highcharts.js‘ %}"></script>
    <script>
    $(document).ready(function(){
       $("#btn3").click(function(){
                  $.post("{% url ‘ajax_kchart‘ %}",
                     {
                       csrfmiddlewaretoken:"{{ csrf_token }}",
                       shijian:$("#shijian3").val(),
                       chnl:$("#mkt_chnl").val(),
                   },
                   function (data,status) {
                       var day_id = [];
                         var ydxz = [];
                         var ydjz = [];
                         var kdxz = [];
                         var kdjz = [];
                         var dsxz = [];
                         var dsjz = [];
                         var lbdg = [];
                         var sjqz = [];
                         var sjxz = [];
                         var ftth = [];
                       for (var i = 0; i <= data.length - 1; i++) {
                            var cdma_jz = data[i].cdma_xz + data[i].cdma_zdcj;
                         var adsl_jz = data[i].adsl_xz + data[i].adsl_zdcj;
                         var iptv_jz = data[i].iptv_xz + data[i].iptv_zdcj;
                         var pstn_jz = data[i].pstn_xz + data[i].pstn_zdcj;
                            $("#zhiju").html(data[i].mkt_chnl_name);
                            day_id.push(data[i].day_id);
                            ydxz.push(data[i].cdma_xz);
                         ydjz.push(cdma_jz);
                         kdxz.push(data[i].adsl_xz);
                         kdjz.push(adsl_jz);
                         dsxz.push(data[i].iptv_xz);
                         dsjz.push(iptv_jz);
                         lbdg.push(data[i].dlb_dg);
                         sjqz.push(data[i].cdma_qz);
                         sjxz.push(data[i].sjsg_xz);
                         ftth.push(data[i].ftth_xz);
                          };
                          $(‘#cdma_chart‘).highcharts({  //移动业务发展图表
                              chart: {
                                  type: ‘line‘
                              },
                              title: {
                                  text: ‘移动业务发展量‘
                              },
                              xAxis: {
                                  categories: day_id
                              },
                              yAxis: {
                                  title: {
                                      text:  ‘个‘
                                  }
                              },
                              series: [{
                                  name: ‘移动新增‘,
                                  data: ydxz
                              }, {
                                  name: ‘移动净增‘,
                                  data: ydjz
                              },{
                                  name: ‘4G新增‘,
                                  data: sjxz
                              }
                              ],
                              plotOptions: {
                                  line: {
                                      dataLabels: {//数据标签
                                          enabled: true
                                      }
                                  },
                                  series: {//延迟加载
                                        animation: false
                                  }
                              },
                         });
                    } }
</script>
/head>
<body>
 <form class="form-inline">
               {% csrf_token %}
            <label class="control-label"><i class="icon-time"></i> 时间</label>
            <select name="shijian3" id="shijian3" class="input-small" placeholder=".input-small">
                  {%for d in downlist%}
              <option value="{{d.day_id}}">{{d.day_id}}</option>
              {%endfor%}
            </select>
            &nbsp;&nbsp;
            <label class="control-label"><i class="icon-eye-open"></i> 支局</label>
            <select name="mkt_chnl" id="mkt_chnl" class="input-small" placeholder=".input-small">
                  {% for d in data %}
              <option value="{{d.mkt_chnl_id}}">{{d.mkt_chnl_name}}</option>
              {%endfor%}
            </select>
            <input type="button" id="btn3" value="查询" class="btn btn-primary btn-sm"/>
           </form>
           <div class="chart" id="cdma_chart"></div>
</body>
</html>

完毕!

时间: 2024-10-05 00:16:26

[django]django+post+ajax+highcharts使用方法的相关文章

Django 如何让ajax的POST方法带上CSRF令牌

大家知道,在大前端领域,有一种叫做ajax的东东,即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML),它被用来在不刷新页面的情况下,提交和请求数据.如果Django服务器接收的是一个通过ajax发送过来的POST请求的话,那么将很麻烦.何也?因为在ajax中,没有办法像form表单中那样携带{% csrf_token %}令牌.那怎么办呢?好办!在你的前端模版的JavaScript代码处,添加下面的代码: // 使用jQuer

Django中的Ajax详解

AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML). 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求:异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求.AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新:(这一特点给用户的感受是在不知不觉中完成请

Django的日常-AJAX

目录 Django的日常-AJAX AJAX简介 AJAX与JQ的一个实例 AJAX与contentType AJAX传json格式 AJAX传文件 Django的日常-AJAX AJAX简介 首先AJAX是一种无需重新加载整个网页的前提下,能够更新部分网页的技术,他并不是一种新的编程语言,而是一种使用现有标准的新方法,是基于原生JavaScript开发的,他可以用于创建快速动态网页. AJAX最大的特点就是局部刷新以及异步提交,局部刷新,顾名思义就是可以在不刷新整个页面的情况下局部刷新,而异步

django中将model转换为dict的方法

django中将model转换为dict的方法 from django.forms.models import model_to_dict from user.model import userprofile model_to_dict(userprofile.model.get(id=100)) d3 = {'username': 'zz_yy', 'password': 'zyjzyj'} a = UserProfile() a.username = 'zz__e' a.password =

pycharm上运行django服务器端、以及创建app方法

安装Django  下载Django包,解压缩. CMD 进入解压路径下. 执行:python setup.py install 增加环境变量: C:\Python27\Scripts 测试django是否安装成功 shell import django django.VERSION 把Django导入项目 CMD 进入项目路径 执行 django-admin.py startproject 项目名  运行开发服务器 项目Django路径下  python manage.py runserver

[Django]Django的orm中get和filter的不同

Django的orm中get和filter的不同 Django的orm框架对于业务复杂度不是很高的应用来说还是不错的,写起来很方面,用起来也简单.对于新手来说查询操作中最长用的两个方法get和filter有时候一不注意就会犯下一些小错误.那么今天就来小节下这两个方法使用上的不同. 我常用的是1.5版本的django,就以此为例来说说吧. 文档 首先对比下两个函数文档上的解释. get Returns the object matching the given lookup parameters,

DWR(AJAX)+Highcharts绘制曲线图,饼图

基本需求: 1. 在前台会用DWR框架(或者AJAX)调用Java后台代码获取要在Hightcharts展示的数据 2. 了解JSON(JavaScript Object Notation)的格式 3. Hightcharts的x,y轴数据绑定 4. Hightcharts的使用自己定义样式 Highcharts代码(或者说Highcharts的配置)是一个json字符串,说白了就是要想在前台使用Hightcharts插件画图,后台返回的数据类型必须是json字符串.Hightcharts才会认

Ajax.BeginForm返回方法OnSuccess

在MVC3里面--程序集 System.Web.Mvc.dll, v4.0.30319有这么一个Ajax.BeginForm异步登录验证的类型,我们在下面给出一个例子:在登录页面Logion.cshtml.使用@using (Ajax.BeginForm("Login", "Home", new AjaxOptions { HttpMethod = "Post", OnSuccess = "tips", OnBegin = &

对象不支持ajax属性或方法

今天在做泛微流程开发的时候,遇到一件很奇怪的事情,流程流转到第二个节点,居然报错了,提示”对象不支持ajax属性和方法“,但是第一个节点测试并未报错了, /(ㄒoㄒ)/~~,然后试着把jQuery的简写“$"改成”JQuery“后,不在提示”对象不支持ajax属性和方法“错误,而是变成了“automation服务器不能创建对象”问题,看下了错误的代码 行”var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLH